问题标签 [lexical-cast]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
78 浏览

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

我在两个不同的设备上有相同版本的 boost,但行为是不同的

文档指出它应该给我 INT_MAX(2 的补码翻转),但是在一台机器上我得到一个异常抛出,而在另一台机器上我得到 INT_MAX。

0 投票
1 回答
327 浏览

c++ - 启用 boost::lexical_cast 以对小于两倍范围的值抛出超出范围错误

boost::lexical_cast对于大于 double 的最大值的值引发错误。但是对于小于最小值的数字,它会默默地将其设为零。如何为以后的情况启用超出范围的错误(即,如果一个数字小于 2.22507e-308,那么解析器应该抛出一些错误)?

0 投票
1 回答
208 浏览

c++ - 转换字符串标记流时如何避免重复的字符串流构造

我(打算)使用此答案中的代码从 CSV 读取内容。本质上,我得到了一个迭代器,用于连续,字符之间的字符串;但我不想将它们放在字符串向量中,而是想将这些字符串解析为(任意)类型 T 的元素,它来自模板参数。所以...

我可以使用 istringstream`(例如这里建议的):

但这太过分了(我可能在这里建造了两次甚至三次)。如果 C++ 有一个std::from_string()类似的std::to_string,那么我会做

但这不存在。也许boost::lexical_cast?我真的宁愿使用一些标准的东西。

我应该怎么做?

0 投票
1 回答
291 浏览

c++ - 捕获 boost::bad_lexical_cast 时,我可以访问要转换的字符串/令牌吗?

我正在运行的代码可能会boost:bad_lexical_cast在投射一系列标记时抛出 - 但我无法进入代码并“将标记放在一边”,因此我可以找出实际失败的投射。

是否boost:bad_lexical_cast让您访问它试图以某种方式强制转换的字符串?除了一些关于类型名称的字段外,我似乎在它的定义中找不到任何东西,但也许我缺少一些东西。

0 投票
1 回答
140 浏览

c++ - lexical_cast strtof strtold 失去准确性?

这里:

输出:

为什么输出不是 277499.84?

0 投票
1 回答
1861 浏览

c++ - 专门为 boost::property_maps 中的枚举提供 boost::lexical_cast

我正在尝试使用在其捆绑的顶点属性内部boost::graph具有的一个。enum当我尝试将捆绑属性用于 boost::dynamic_property 时,问题就开始了。看起来我无法为 boost::lexical_cast 获得正确的模板专业化来识别类型。

如果我尝试enum直接编写,一切正常。尝试将其放入动态属性时,出现以下错误:

该行Target type is neither std::istreamable nor std::wistreamable向我表明, lexical_cast 没有正确专门化。然而,直接使用词法转换似乎工作得很好。

0 投票
1 回答
288 浏览

c++ - 如何将 boost::lexical_cast 与 folly::fbstring 一起使用?

以下程序:

给出这个输出:

这是因为lexical_cast没有意识到这fbstring是一个string-like 类型,而只是将stream << in; stream >> out;其转换为通常的类型。但是operator>>对于字符串在第一个空格处停止,lexical_cast检测到整个输入没有被消耗,并抛出异常。

有什么方法可以教授lexical_castfbstring或更一般地说,任何string类似的类型)?

0 投票
1 回答
337 浏览

c++ - boost::lexical_cast 和 boost::units::quantity 不再编译

我对解析通过 boost_program_options 获取的值以提升::units 数量的代码有疑问。它以前工作得很好,现在,在新的设置上,不再工作了。晦涩的错误消息暗示了 boost::lexical_cast 的问题,它似乎被 program_options 使用。

一个最小的例子(我摆脱了所有程序选项的东西)是

这在我的旧设置(gcc 4.7.2,boost 1.49)上编译没有错误,但是在带有 boost 1.55 的 gcc 4.9.2 上不再编译(顺便说一下,请忽略这样一个事实,即使它编译,它也会在无论哪种情况,因为实际上没有从流中读取任何内容;我不想通过包含整个解析逻辑来混淆这篇文章)。相反,我收到错误消息

如果我在词法转换中使用不同的自定义类型(不是 boost::units::quantity)并为其重载 >> 运算符,或者如果我直接尝试从字符串流中读取数量,一切正常。

有人可以告诉我我在这里做错了什么吗?

0 投票
1 回答
255 浏览

c++ - 使用 lexical_cast 时精度丢失(细绳)

使用 boost::lexical_cast 时(我在 VS2013 上使用 boost 版本 1.58),我无法获得字符串中指定的确切值,即使它可以在浮点数中表示:

r 是 91.249992 (0x42B67FFF) 而不是 91.250000 (0x42b68000)

先前版本的 boost 表现出预期的方式。是否有我缺少的精度设置?

0 投票
3 回答
1490 浏览

c++ - 为什么 lexical_cast 要求 operator>> 在匹配的命名空间中?

这是一个测试用例:

Boost 拒绝转换,声称没有匹配operator>>

演示

但是,当我operator>>在 namespace中声明/定义时,代码的工作方式与宣传的一样N

为什么?为什么查找会失败?