首页 > 后端开发 > C++ > 为什么'stringstream >>”在提取失败时修改变量的值?

为什么'stringstream >>”在提取失败时修改变量的值?

Barbara Streisand
发布: 2024-11-27 05:02:21
原创
459 人浏览过

Why Does `stringstream >>` 在提取失败时修改变量的值?
>` 在提取失败时修改变量的值? " />

Stringstream 的不一致行为 >> 失败时值修改

如 Stroustrup 在 TC PL 第 3 版第 21.3.3 节中所述,读取操作失败时变量的值应保持不变但是,使用 stringstream 时会出现特殊行为。 >> 具有不匹配的数据类型。

在给出的代码片段中,整数变量 v 被初始化为 123。当尝试使用 stringstream >> 读取单词到该整数时,尽管预期保留其原始值,v 的值仍为零。

C 11 标准中的澄清解决了这一明显的矛盾,此前,在提取失败时,值保持不变,并且设置了故障位。但是,在 C 11 中,现在将零写入变量,并且故障位仍然设置。

这种改变行为的原因在于 std 的更改。 ::scanf 风格的输入解析到 C 11 中 std::strtoll 和类似函数的使用。这些函数以不同的方式处理数字转换,导致提取失败时修改 v。

以上是为什么'stringstream >>”在提取失败时修改变量的值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板