带负数的lexical_cast在不同的机器上表现不同

时间:2016-02-19 18:47:21

标签: c++ boost lexical-cast

我在两个不同的设备上有相同版本的boost,但

的行为却不同
lexical_cast<uint>("-1")

文档声明它应该给我INT_MAX(2&#39; s补码翻转),但在一台机器上我得到一个异常抛出,而在另一台机器上我得到INT_MAX。

1 个答案:

答案 0 :(得分:1)

显然,如果您查看lexical_cast的提升代码,则会使用interpreter << arg; interpreter >> result之类的代码和>>运算符

加载和操作输入
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在不同的计算机上表现不同。