2009-10-21 93 views
0

我有一個非常有趣的問題,在Mac上編譯一個小程序(GCC 4.2)。下面的函數只能將字符串或字符串傳入字符串流,而不是其他任何東西(int,double,float等)。事實上,如果我嘗試將int轉換爲字符串,則會設置失敗標誌。std :: stringstream GCC異常行爲

但是,除去在XCode中爲調試模式默認設置的預處理器標誌:_GLIBCXX_DEBUG=1將產生所需的結果/正確的行爲。

這裏是我正在談論的簡單功能。值是類型T的模板變量。經過int,double,float(不工作),char和字符串(工作)的測試。

template < typename T > 
const std::string Attribute<T>::getValueAsString() const 
{ 
std::ostringstream stringValue; 
stringValue << value; 
return stringValue.str(); 
} 

任何想法,我做錯了,爲什麼這不起作用,或預處理標誌確實使這不再工作是什麼?

謝謝!

回答