atof(): 把字符串转换为浮点数
atoi():函数用来将字符串转换成整数(int)
atol():把参数 str 所指向的字符串转换为一个长整数
c++中的定义
#include
double atof (const char* str);
返回值:
具体使用:
#include
#include
#include
int main()
{
long val;
char str[20];
strcpy(str, "1122"); //输出1122
val = atol(str);
printf("字符串值 = %s, 长整型值 = %ld\n", str, val);
// strcpy(str, "human"); //输出0
strcpy(str, "will ai replace human?"); //strcmp数组长度溢出,trap,运行失败,修改str的长度后,输出为0
val = atol(str);
printf("字符串值 = %s, 长整型值 = %ld\n", str, val);
return(0);
}
std::stod(转换为double双精度),std::stof(转换为float单精度), std::stold(转换为long double长双精度),stoi,stol,stoll,stoul,stoull, from_chars(c++17,转换字符序列)
#include
double stod (const string& str, size_t* idx = 0);
double stod (const wstring& str, size_t* idx = 0);
其中,idx不是空指针时,该函数还将idx的值设置为数字后str中第一个字符的位置。
返回值:
正常返回double精度浮点数
不能执行转换时,抛出异常invalid_argument
超出double所能表示的范围时,抛出异常out_of_range
无效的idx会导致未定义的行为,一般默认就好
具体实例:
#include
#include
#include
#include
#include
using namespace std;
void testTypeConvert()
{
//int --> string
int i = 5;
string s = to_string(i);
cout << s << endl;
//double --> string
double d = 3.14;
cout << to_string(d) << endl;
//long --> string
long l = 123234567;
cout << to_string(l) << endl;
//char --> string
char c = 'a';
// cout< string
string cStr; cStr += c;
cout << cStr << endl;
s = "123.257";
//string --> int;
cout << stoi(s) << endl;
//string --> long
cout << stol(s) << endl;
//string --> float
cout << stof(s) << endl;
//string --> doubel
cout << stod(s) << endl;
}
int main(){
testTypeConvert();
return 0;
}
使用说明:
使用to_string时请包含头文件
,无符号整数包括0和正数,目前仅c++11及以后版本支持使用to_string
std::string to_string( int value ); |
(1) | (C++11 起) |
std::string to_string( long value ); |
(2) | (C++11 起) |
std::string to_string( long long value ); |
(3) | (C++11 起) |
std::string to_string( unsigned value ); |
(4) | (C++11 起) |
std::string to_string( unsigned long value ); |
(5) | (C++11 起) |
std::string to_string( unsigned long long value ); |
(6) | (C++11 起) |
std::string to_string( float value ); |
(7) | (C++11 起) |
std::string to_string( double value ); |
(8) | (C++11 起) |
std::string to_string( long double value ); |
(9) | (C++11 起) |
1) 把有符号十进制整数转换为字符串,与 std::sprintf(buf, "%d", value) 在有足够大的 buf
时产生的内容相同。
2) 把有符号十进制整数转换为字符串,与 std::sprintf(buf, "%ld", value) 在有足够大的 buf
时产生的内容相同。
3) 把有符号十进制整数转换为字符串,与 std::sprintf(buf, "%lld", value) 在有足够大的 buf
时产生的内容相同。
4) 把无符号十进制整数转换为字符串,与 std::sprintf(buf, "%u", value) 在有足够大的 buf
时产生的内容相同。
5) 把无符号十进制整数转换为字符串,与 std::sprintf(buf, "%lu", value) 在有足够大的 buf
时产生的内容相同。
6) 把无符号十进制整数转换为字符串,与 std::sprintf(buf, "%llu", value) 在有足够大的 buf
时产生的内容相同。
7,8) 把浮点值转换为字符串,与 std::sprintf(buf, "%f", value) 在有足够大的 buf
时产生的内容相同。
9) 把浮点值转换为字符串,与 std::sprintf(buf, "%Lf", value) 在有足够大的 buf
时产生的内容相同。
具体实例:
#include
#include
int main()
{
double f = 23.43;
double f2 = 1e-9;
double f3 = 1e40;
double f4 = 1e-40;
double f5 = 123456789;
unsigned int f6=100;
int f7=100;
std::string f_str = std::to_string(f);
std::string f_str2 = std::to_string(f2); // 注意:返回 "0.000000"
std::string f_str3 = std::to_string(f3); // 注意:不返回 "1e+40".
std::string f_str4 = std::to_string(f4); // 注意:返回 "0.000000"
std::string f_str5 = std::to_string(f5);
std::string f_str6 = std::to_string(f6);
std::string f_str7 = std::to_string(f7);
std::cout << "std::cout: " << f << '\n'
<< "to_string: " << f_str << "\n\n"
<< "std::cout: " << f2 << '\n'
<< "to_string: " << f_str2 << "\n\n"
<< "std::cout: " << f3 << '\n'
<< "to_string: " << f_str3 << "\n\n"
<< "std::cout: " << f4 << '\n'
<< "to_string: " << f_str4 << "\n\n"
<< "std::cout: " << f5 << '\n'
<< "to_string: " << f_str5 << '\n'
<< "std::cout: " << f6 << '\n'
<< "to_string: " << f_str6 << '\n'
<< "std::cout: " << f7 << '\n'
<< "to_string: " << f_str7 << '\n';
return 0;
}
输出结果:
std::cout: 23.43
to_string: 23.430000
std::cout: 1e-09
to_string: 0.000000
std::cout: 1e+40
to_string: 10000000000000000303786028427003666890752.000000
std::cout: 1e-40
to_string: 0.000000
std::cout: 1.23457e+08
to_string: 123456789.000000
std::cout: 100
to_string: 100
std::cout: 100
to_string: 100
c++中字符串转浮点数stod vs atof_c++stod_guotianqing的博客-CSDN博客
C/C++ atoi、atof与itoa函数的实现_c++ atoi 对于浮点数_博弈Dream的博客-CSDN博客
C++ to_string()函数_WeSiGJ的博客-CSDN博客
C 库函数 – atol() | 菜鸟教程
https://www.cnblogs.com/xiaofeiIDO/p/8092649.html (c++数字字符串相互转化)
C++ STL std::to_string 中文文档 (to_string详细用法)