gpt4 book ai didi

c++ - 启用 _GLIBCXX_DEBUG 后,Stringstream 无法使用 double

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:23 26 4
gpt4 key购买 nike

我正在使用 _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 模式运行,但这会干扰它。

最佳答案

其他人已经看到了这个over at cplusplus.comhere at stackoverflow ,也是。

共识是它是 Mac OS 的 gcc 4.2 中的一个已知错误,并且由于该编译器不再更新,因此不太可能得到修复。

在我看来,您可以 (1) 使用 LLVM,或者 (2) 构建您自己的 GCC 并使用它。

关于c++ - 启用 _GLIBCXX_DEBUG 后,Stringstream 无法使用 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7623070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com