C++/C 字符串与数字互相转换
简介
提供字符串与数字相互转换的方法
用法
C语言:
序号 | 函数 | 描述 |
1 | itoa() | 将整型/长整型转换为字符串 |
2 | ultoa() | 将无符号长整型值转换为字符串 |
3 | ecvt() | 将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点 |
4 | fcvt() | 以指定位数为转换精度,余同ecvt() |
5 | gcvt() | 将双精度浮点型值转换为字符串,转换结果中包含十进制小数点 |
6 | atof() | 将字符串转换为双精度浮点型值 |
7 | atoi() | 将字符串转换为整型值 |
8 | atol() | 将字符串转换为长整型值 |
9 | strtod() | 将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字 |
10 | strtol() | 将字符串转换为长整值,并报告不能被转换的所有剩余数字 |
11 | strtoul() | 将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字 |
C++:
1. 采用stringstream方式
头文件 #include <sstream>
用例:
#include <string>
#include <sstream>
void NumToStr()
{
double num = 123.123;
string str; stringstream ss;
ss << num;
ss >> str; //str = ss.str();
}
void StrToNum()
{
double num = 123.123;
string str;
stringstream ss;
ss << str;
ss >> num;
}
2. 利用格式化输入输出
序号 | 函数 | 描述 |
1 | sprintf | 将数字转换为字符串 |
2 | sscanf | 将字符串转换为数字 |
用例:
#include <stdio>
void NumToStr()
{
double num = 123.123;
char str[255];
sprintf(str, "%.2f", num);
}
void StrToNum()
{
double num;
char str[] = "123.123";
sscanf(str, "%f", &num);
}
格式符说明
转换说明 | 输出 |
%a,%A | 浮点数、十六进制数和p-计数法(C99) |
%c | 一个字符 |
%d | 有符号十进制数 |
%e,%E | 浮点数,e计数法 |
%f | 浮点数,十进制计数法 |
%g,%G | 根据数值不同自动选择%f或%e,%e格式在指数小于-4或者大于等于精度时使用 |
%i | 有符号十进制整数(与%d相同) |
%o | 无符号八进制整数 |
%p | 指针 |
%s | 字符串 |
%u | 无符号十进制数 |
%x,%X | 使用十六进制数0f的无符号十六进制整数 |
%% | 打印一个百分号 |
符号 | 说明 | 示例 |
- | 项目左对齐,即,会把项目打印在字段的左侧开始处 | "%-20s" |
+ | 有符号的值若为正,则显示带加号的符号;若为负,则显示带减号的符号 | "%+6.2f" |
(空格) | 有符号的值若为正,则显示时带前导空格(但是不显示符号);若为负,则带减号符号,+标志会覆盖空格标志 | "% 6.2f" |
# | 使用转换说明的可选形式。若为%o格式,则以0开始;若为%x和%X格式 ,则以0x或0X开始。对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符。对于%g和%G格式,它防止尾随0被删除 | "%#o" "%#8.0f" "%+#10.3E" |
0 | 对于所有的数字格式,用前导零而不是空格填充字段宽度。如果出现-标志或者指定了精度(对于整数)则忽略该标志 | "%010d" "%08.3f" "%02X" |
——————————————————————————————————————————
https://blog.csdn.net/luna_zhan/article/details/80433501
https://blog.csdn.net/myRealization/article/details/101077366