在 Mac (GCC 4.2) 上编译一个简短的小程序时,我遇到了一个非常有趣的问题。下面的函数只会将字符或字符串流式传输到字符串流中,但不会将其他任何内容(int、double、float 等)流式传输。事实上,如果我尝试将例如 int 转换为字符串,则会设置失败标志。
但是,删除预处理器标志:_GLIBCXX_DEBUG=1
默认情况下在 XCode 中为调试模式设置,将产生所需的结果/正确的行为。
这是我正在谈论的简单功能。value 是 T 类型的模板变量。针对 int、double、float(不工作)、char 和 strings(工作)进行了测试。
template < typename T >
const std::string Attribute<T>::getValueAsString() const
{
std::ostringstream stringValue;
stringValue << value;
return stringValue.str();
}
任何想法我做错了什么,为什么这不起作用,或者预处理器标志做了什么使它不再起作用?
谢谢!