一、C/C++数值转换函数
C/C++语言提供了几个标准库函数,可以将字符串、整型浮点型等相互转换。
atof():将字符串转换为双精度浮点型值。
atoi():将字符串转换为整型值。
atol():将字符串转换为长整型值。
itoa():将字符串转为整型值。
gcvt():将浮点型数转换为字符串,取四舍五入。
解决方法:在最开头加如下的代码:
#pragma warning(disable:4996)
二、boost数值转换lexical_cast
lexical_cast的优势
#include<boost/lexical_cast.hpp>中定义了此函数lexical_cast使用统一接口形式实现任意类型之间的转换,增强了易用性。
#pragma warning(disable:4996)
#include<iostream>
using namespace std;
//包含头文件
#include<boost/lexical_cast.hpp>
using boost::lexical_cast;//声明,省略boost名字空间前缀
int main()
{
{
//字符串转整数
int a = atoi("123");
cout << a << endl;
//整数转字符串
char b[64] = { 0 };
itoa(16, b, 2);//将10进制的16转为为2进制并保存到数组d中
cout << b << endl;
//字符串转浮点数
double c = atof("1.23456");
cout << c << endl;
//浮点数转字符串
char d[64] = { 0 };
gcvt(1.23456, 4, d);//四舍五入
cout << d << endl;
}
cout << "使用boost\n";
//字符串转为数值
int n = boost::lexical_cast<int>("520");
std::cout << n << std::endl;
//字符串转为float
float f = boost::lexical_cast<float>("123.456");
std::cout << f << std::endl;
//字符串转为double
double d = boost::lexical_cast<double>("3.14159");
std::cout << d << std::endl;
//取前3位字符转换为double
double d1 = boost::lexical_cast<double>("3.14159", 3);
std::cout << d1 << std::endl;
//double转为string
std::string s = boost::lexical_cast<std::string>(1.121415926);
std::cout << s << std::endl;
//16进制数转为string
std::string shex = boost::lexical_cast<std::string>(0x000a);
std::cout << shex.c_str() << std::endl;
system("pause");
return 0;
}
结果:
https://edu.csdn.net/course/detail/8697?spm=1003.2449.3001.8293.7