(轉自: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;
}
輸出結果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SN0Q2YkJzNwUjMyQmZ1EjY1UTN3QjZyETOmlTO0ATYk9CXxEzLcFDMwIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLxM3Lc9CX6MHc0RHaiojIsJye.png)
這個示例的本質是:數字 -> 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;
}