(转自:https://blog.csdn.net/nwpu_yike/article/details/22100615)
一、类型转换——数字->字符串
C++ stringstream 类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据互相转换的时候。要想在程序中使用 stringstream 类,我们需要在源程序文件中包含头文件include<sstream>。stringstream 对象的使用方法与cout对象的使用方法基本相同。
当我们需要按预定的格式将程序中的数据保存在一个string 中的时候,可以先创建一个stringstream 对象,并通过运算符 ”<<“ 将数据传递给 stringstream 对象。(这与通过”<<“ 使用cout 对象的方法相同。)接着,我们可以通过调用stringstream 类的函数str() 将对象所包含的内容赋给一个string对象。在下面的程序中,我们先将数据传递给一个stringstream 对象,然后通过该 stringstream 对象将数值赋给一个string 对象。注:cout能使用的所有ios格式标记也可以在stringstream 对象中使用。
#include <iostream>
#include <sstream>
using namespace std;
int main(void)
{
double pi = 3.141592653589793;
float dollar = 1.00;
int dozen = 12;
int number = 35;
stringstream ss;
ss << "dozen: " << dozen << endl;
//显示小数
ss.setf(ios::fixed);
//显示2位小数
ss.precision(2);
ss << "dollar: " << dollar << endl;
//显示10位小数
ss.precision(10);
ss << "pi: " << pi << endl;
//按十六进制显示整数
ss.unsetf(ios_base::dec);
ss.setf(ios::hex);
ss << "number: " << number << endl;
string text = ss.str();
cout << text << endl;
return 0;
}
输出结果:
这个示例的本质是:数字 -> stringstream对象 -> string
二、类型转换——字符串->数字
string -> double/int
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
double dVal;
int iVal;
string str;
stringstream ss;
// string -> double
str = "123.456789";
ss << str;
ss >> dVal;
cout << "dVal: " << dVal << endl;
// string -> int
str = "654321";
ss.clear();
ss << str;
ss >> iVal;
cout << "iVal: " << iVal << endl;
return 0;
}
输出结果:
这个示例的本质是:string -> stringstream对象 -> 数字
来源:51CTO
作者:sonissa
链接:https://blog.51cto.com/14232799/2466033