我在两个不同的设备上有相同版本的 boost ,但行为不同
lexical_cast<uint>("-1")
文档指出它应该给我 INT_MAX(2 的补码翻转)但是在一台机器上我得到一个异常抛出而在另一台机器上我得到 INT_MAX。
最佳答案
显然,如果您查看 lexical_cast
的 boost 代码使用这样的代码加载和操作输入 interpreter << arg; interpreter >> result
在>>
运算符(operator)
this->setg(start, start, finish);
std::basic_istream<CharT> stream(static_cast<Base*>(this));
stream.unsetf(std::ios::skipws);
它使用 std::basic_istream
所以不同版本的 libstdc++ 会导致 lexical_cast
在不同的机器上表现不同。
关于c++ - 负数的 lexical_cast 在不同的机器上表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35512705/