2012-07-22 82 views
1

所以,基本上這就是我的代碼中發生問題的地方。在字符串末尾添加一個double(C++)

#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 
#include <cstring> 

void main() 
{ 
    double k = 10.0; 
    string out; 
    out = "V"; 
    out += "."; 
    out << k; <--- 
} 

我嘗試編譯,但我得到這個錯誤:

錯誤C2784:「的std :: basic_ostream < _Elem,_Traits> &的std ::操作< <(STD :: basic_ostream < _Elem, _Traits> & &,_Ty): '從 '的std :: string'

」不能推斷出模板參數爲' 的std :: basic_ostream < _Elem,_Traits> & & ......那是指着帶有箭頭的那條線。我究竟做錯了什麼?

+0

'的std :: to_string'可以幫助你。此外,http://stroustrup.com/bs_faq2.html#void-main – chris 2012-07-22 02:22:35

回答

1

嘗試以下操作: -

std::ostringstream strs; 
strs << dbl; 
std::string str = strs.str(); 
1

您要使用的string代替stringstream。沒有定義運算符<<,它將以string作爲其第一個參數,這是編譯器試圖告訴您的內容(以相當神祕的方式)。

stringstream out; 
out << "V." << k; 
string s = out.str(); 

如果你在C++ 11,你可以這樣寫:

double k = 10.0; 
string out; 
out = "V"; 
out += "."; 
out += to_string(k); 
+0

所以我應該使用什麼運營商,而不是<<(我寧願也不使用stringstream) – ked 2012-07-22 02:22:48

+0

@ked爲什麼不使用'stringstream'?它只是一個'string'對象的包裝。 – Potatoswatter 2012-07-22 02:23:29

+1

@ked如果你使用C++ 11,你可以使用'out + = to_string(k)'。在C++ 11之前,'stringstream'是你最好的選擇。 – dasblinkenlight 2012-07-22 02:25:21

2

使用std::stringstreamboost::lexical_cast

out += boost::lexical_cast<std::string>(k); 

std::to_string如果你能使用C++ 11

+0

嗯,這似乎是我的情況最有用的一個......謝謝!雖然我對助推庫感到陌生。 – ked 2012-07-22 02:24:48

相關問題