1. 程式人生 > >C++中stringstream類如何清除快取

C++中stringstream類如何清除快取

C++程式設計中,在用stringstream類的庫函式將int或double型別轉換為string類時,若使用同一個stringstream類物件,常需要將其之前的快取清空,網上有很多文章說可以呼叫clear()方法,但我自己嘗試過很多遍後發現clear()並沒有發揮清空快取的作用,後來終於在一篇回帖中看到將快取清空的方法(str()),在此學習一下。
直接上程式碼(一下程式均在devC++中通過):

先試一下clear()方法

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main() {
    stringstream stream;
    string b;
    stream.precision(10);  //重設定stream的精度 
    double a = 4.23233;
    stream << a;          //將浮點數a加入快取
    b = stream.str();     //將快取中的各種資料轉換為string類
    cout << b << endl;
    stream.clear();      //呼叫clear()方法
    double aa = 2.3;
    stream << aa;        //將浮點數aa加入快取
    b = stream.str();    //將快取中的各種資料轉換為string類

    cout << b;
} 

執行結果為:

4.23233
4.232332.3
可見clear()並有將stream物件的快取清空!

再用str()方法

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main() {
    stringstream stream;
    string b;
    stream.precision(10);  //重設定stream的精度 
    double a = 4.23233;
    stream << a;
    b = stream.str();
    cout << b << endl;
    stream.str("");   //清空快取
    double aa = 2.3;
    stream << aa;
    b = stream.str();
    cout << b;
} 

執行結果為:

4.23233
2.3

這次stream物件的快取被清空了。