提升不良词法强制转换:将字符串转换为无符号长整型时,无法将源类型值解释为目标
boost bad lexical cast: source type value could not be interpreted as target when converting a string to unsigned long long
我在 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
之前切断字符串的小数部分。
相关文章:
- 无法转换类型 C++
- 包含可变参数包的第一个可转换类型的别名的结构
- 将 std::conditional 与不可转换类型(原始与指针)一起使用
- 链接方法时出现转换类型错误
- 如何避免隐式转换类型
- 在多重继承场景中动态强制转换类型
- 编译器不支持的转换类型
- 错误调用功能无法转换类型
- 我想看到一个在整个后缀表达式的上下文中查找转换类型 id 的示例
- 对于动态类型为强制转换类型的对象,dynamic_cast失败
- 无法在初始化中转换类型
- 如何让"auto"转换类型
- 如何通过强制转换类型指针将字符数组转换为uint16_t
- 如何从新运算符+(Template类)返回具有转换类型的对象
- 带有模板的基于枚举的工厂无法转换类型
- 使用SWIG类型映射通过字符串转换类型
- 对于可转换类型,设计比循环依赖项更好
- SWIG不能正确转换类型定义
- 将类型转换扩展到可转换类型的对/元组
- 想要将字符数组的部分转换/类型转换为值