[英]Stringstream not working with doubles when _GLIBCXX_DEBUG enabled
我正在使用_GLIBCXX_DEBUG模式來幫助查找我的代碼中的錯誤,但我遇到了一個問題,我認為這是庫中的一個錯誤,但希望有人可以告訴我,我只是做錯了。 這是一個重復問題的簡短例子:
#define _GLIBCXX_DEBUG
#include <iostream>
#include <sstream>
int main (int argc, const char * argv[]) {
std::ostringstream ostr;
ostr << 1.2;
std::cout << "Result: " << ostr.str() << std::endl;
return 0;
}
如果我注釋掉#define,那么輸出是(正如預期的那樣):
Result: 1.2
使用_GLIBCXX_DEBUG定義,但輸出只是:
Result:
我已將此跟蹤到流的_M_num_put字段保留為NULL,這會導致在流中拋出(並捕獲)異常並導致該數字沒有輸出。 _M_num_put應該是來自語言環境的std :: num_put(我沒有聲稱理解它應該如何工作,這正是我迄今為止在搜索中學到的)。
我在帶有XCode的Mac上運行它並嘗試使用“LLVM GCC 4.2”和“Apple LLVM Compiler 3.0”作為具有相同結果的編譯器。
我很感激你解決這個問題的任何幫助。 我想繼續在我的代碼上使用_GLIBCXX_DEBUG模式運行,但這會干擾它。
其他人已經在cplusplus.com和stackoverflow上看到了這一點。
一致認為,對於Mac OS來說,它是gcc 4.2中的已知錯誤,並且由於該編譯器不再被更新,因此不太可能得到修復。
在我看來,您可以(1)使用LLVM,或(2)構建您自己的GCC並使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.