1: string转int的方式
- 采用最原始的 string ,然后按照 十进制的特点进行算术运算得到 int , 但是这样的方式比较麻烦,这里不做介绍
- 采用标准库中 atio 函数
string str = "12";
int a = atio(str.c_str())。
而且标准库中,对于其他类型的转换如:浮点型 atof() ,long型 atol() 也有支持的浮点型和long 型转换的。
- 采用 sstream头文件中定义的字符串流对象来实现转换。
istringstream is("12") ;
int i;
is >> i;
#include <iostream>
#include <sstream>
using namespace std;
#include<string>
#include<math.h>
// 方法一:string 转 int ,int 转string
string str2int2str(const string str){
cout<< str.size()<<endl;
float float_num;
try{
float_num = stof(str);
}catch(const exception&){
}
cout<< float_num << endl;
int int_num = round(float_num);
cout<< int_num << endl;
string str_num = to_string(int_num);
return str_num;
}
// 方法二:string 转 int
void str2int(const string str){
cout<< "------"<< endl;
// 构造输入字符串流,流的内容初始化为:str字符串
istringstream is(str);
int i;
// 从 is流中读入一个int 整数存入在 i 中
is>>i;
cout << i<< endl;
}
int main()
{
string str_num = str2int2str("-0.898");
cout<< str_num << endl;
str2int("");
return 0;
}
打印结果:
6
-0.898
-1
-1
------
0
2: int转string
- 采用标准库中的 to_string函数。
int i = 12;
cout << std::to_string(i) << endl;
to_string()
这种方式不需要任何头文件,它应该是在 utility中,但无需包含,直接使用即可,还定义任何其他内置类型转为 string的重载函数,很方便。
- 采用 sstream 中定义的字符串流对象来实现。
ostringstream os ; // 构造一个字符串流,流的内容为空
int i= 12;
os << i ; // 向输出字符串流中输出 int 整数i 的内容
cout << os.str()<<endl; // 利用字符串流的 str函数获取流中的内容。
void int2str(const int i) {
cout<< "======"<< endl;
string str1 = to_string(i);
cout << str1<< endl;
// 构造一个输出字符串流,流的内容为空
ostringstream os;
// 向输出字符串流中输出int整数i的内容
os<< i;
// 利用字符串流的str函数获取流中的内容
cout << os.str()<< endl;
}
int main()
{
int2str(451);
return 0;
}
打印结果
======
451
451
3: C++ 用sprintf 把整数,浮点数转换成字符串
void int2str2(const int& i) {
char strN[50];
// 将整数i 写入 strN 字符
sprintf(strN,"%d",i);
cout << strN << endl;
}
void float2str(const float& f) {
char strN[50]; // 转换后的字符串
// 保留小数点后两位 float字符
sprintf(strN,"%.2f",f);
cout<< strN<< endl;
}
int main()
{
int2str2(582);
float2str(123.256);
return 0;
}
// 打印结果
582
123.26