天天看點

c++開發之stringstream處理浮點數長度問題

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;
}
           

結果如圖:

c++開發之stringstream處理浮點數長度問題

繼續閱讀