提升不良词法强制转换:将字符串转换为无符号长整型时,无法将源类型值解释为目标



我在 wandbox.org 上编译的以下代码导致以下错误。我不明白为什么我会收到错误。

// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>
#include "boost/lexical_cast.hpp"
typedef unsigned  long long Ulonglong ; 
int main()
{
Ulonglong result   = boost::lexical_cast<unsigned long long>("862.00");
return 0;
}

开始 prog.cc:在函数'int main(('中:prog.cc:11:15:警告: 未使用的变量"结果" [-未使用的变量] 11 | 乌龙龙 结果 = 提升::lexical_cast("862.00"(; | ^~~~~~ 在抛出 'boost::wrapexcept' what(( 的实例后终止调用: 错误的词法转换:源类型值无法解释为目标 中止的表面处理

似乎boost::lexical_cast必须执行精确的转换,没有扩展的行为。您正在尝试将包含小数点(因此包含小数部分(的数字的字符串表示形式转换为整数,这是不允许的。

您应该首先转换为浮点数/双精度(请注意非常大的整数的数据丢失(,然后转换为整数,或者在将其交给boost::lexical_cast之前切断字符串的小数部分。

最新更新