我在两个不同的设备上有相同版本的 boost,但行为是不同的
lexical_cast<uint>("-1")
文档指出它应该给我 INT_MAX(2 的补码翻转),但是在一台机器上我得到一个异常抛出,而在另一台机器上我得到 INT_MAX。
我在两个不同的设备上有相同版本的 boost,但行为是不同的
lexical_cast<uint>("-1")
文档指出它应该给我 INT_MAX(2 的补码翻转),但是在一台机器上我得到一个异常抛出,而在另一台机器上我得到 INT_MAX。
显然,如果您查看 boost 的输入代码,则使用这样的代码和在运算符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
在不同机器上表现不同。