簡體   English   中英

啟用_GLIBCXX_DEBUG時,Stringstream不使用雙精度數

[英]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.comstackoverflow上看到了這一點。

一致認為,對於Mac OS來說,它是gcc 4.2中的已知錯誤,並且由於該編譯器不再被更新,因此不太可能得到修復。

在我看來,您可以(1)使用LLVM,或(2)構建您自己的GCC並使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM