C++语法 stringstream 类的用法
转载并修改自 https://blog.csdn.net/hanjing_csdn/article/details/79922660
一、数字 $\rightarrow$ 字符串
C++ 中 stringstream 类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据互相转换时。
要想在程序中使用 stringstream 类,我们需要引入头文件 <sstream>
。
stringstream 对象的使用方法与其他 stream 系列对象的使用方法非常相似。
当我们需要按预订的格式将程序中的数据保存在一个 string 中的时候,可以先创建一个 stringstream 对象
并通过运算符 <<
将数据传递给 stringstream 对象,这与 cout 对象的方法类似。
接着,我们可以通过调用 stringstream 类的函数 str() 建对象所包含的内容赋值给一个 string 对象。
在下面的程序中,我们先将数据传递给一个 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;
}
二、字符串 $\rightarrow$ 数字
类似地,我们可以通过 >>
运算符使 stringstream 对象具有相反的功能。
#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;
}