c++ - 负数的 lexical_cast 在不同的机器上表现不同

标签 c++ boost lexical-cast

我在两个不同的设备上有相同版本的 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/

相关文章:

c++ - 安装 Dlib 时找不到 Boost

c++ - boost::lexical_cast 从字符串到字符异常

c++ - std::to_string、boost::to_string 和 boost::lexical_cast<std::string> 之间有什么区别?

c++ - boost::lexical_cast 性能很差

c++ - 优点和缺点内联 friend 助手免费功能在大型项目的类中定义

c++ - While 循环和 If 语句和函数

c++ - 我如何判断到目前为止是否有任何 BOOST_CHECK 测试失败?

c++ - 如何使用 CUDA/Thrust 根据其中一个数组中的值对两个数组/vector 进行排序

c++ - c++模板中的一行区别

c++ - 如何在 VS C++ 上初始化 boost::edge_weight_t 类型