C++中stringstream類如何清除快取
阿新 • • 發佈:2019-02-04
C++程式設計中,在用stringstream類的庫函式將int或double型別轉換為string類時,若使用同一個stringstream類物件,常需要將其之前的快取清空,網上有很多文章說可以呼叫clear()方法,但我自己嘗試過很多遍後發現clear()並沒有發揮清空快取的作用,後來終於在一篇回帖中看到將快取清空的方法(str()),在此學習一下。
直接上程式碼(一下程式均在devC++中通過):
執行結果為:
4.23233
4.232332.3
可見clear()並有將stream物件的快取清空!
執行結果為:
4.23233
2.3
這次stream物件的快取被清空了。
直接上程式碼(一下程式均在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物件的快取被清空了。