天天看點

C++ 字元流 stringstream

(轉自: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;
}           

輸出結果:

C++ 字元流 stringstream

這個示例的本質是:數字 -> 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;  
}             

繼續閱讀