1

我在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:警告:未使用的变量“结果”[-Wunused-variable] 11 | Ulonglong 结果 = boost::lexical_cast("862.00"); | ^~~~~~ 在抛出'boost::wrapexcept'的实例后调用终止what():错误的词法转换:源类型值无法解释为目标中止完成

4

1 回答 1

3

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

您应该首先转换为 float/double(注意非常大的整数的数据丢失),然后转换为整数,或者在将字符串传递给boost::lexical_cast.

于 2019-12-18T10:36:53.483 回答