stringstream,istringstream,ostringstream差別
stringstream:同時支援c風格字元串的輸入輸出操作
istringstream:用于執行c風格字元串的輸入操作
ostringstream:用于執行c風格字元串的輸出操作
通常ostringstream類用來格式化字元串,避免申請大量的緩沖區,替代sprintf.
該類能夠根據内容自動配置設定記憶體,其對記憶體的管理也是相當到位
示例代碼:
#include <iostream>
#include <sstream>
using namespace std;
void main()
{
//将double型轉為字元串
stringstream ss;
ss.clear();
double v1 = 612353.78901213456789;
string str1;
cout<<"預設精度:"<<ss.precision()<<endl; //得到預設浮點精度為6,即6位有效數字,再加小數點,長度為7
//不用定點格式,則遇到比較長的數字會用科學計數法表示
ss.precision(4); //由于未用定點格式,這裡設定的是保留4位有效數字
ss << v1; //輸入
ss >> str1; //輸出
cout<<str1<<endl;
//用定點格式
ss.clear();
string str2;
ss.setf(std::ios::fixed); //用定點格式顯示浮點數,不會用科學計數法表示
//ss.precision(4); //由于用了定點格式,設定變為了保留4位小數
ss << v1;
ss >> str2;
cout<<str2<<endl;
}
結果如圖: