>` 在 C 11 及更高版本中提取失败时将目标变量清零? " />
在引用 Stroustrup 的“TC PL,第 3 版”的段落中,作者指出该值如果提取操作失败,v 的值应保持不变,但是,一个示例与此语句相矛盾,因为当 stringstream >> v 操作时 v 被清零。
矛盾行为解释
理解这种明显矛盾的关键在于提取运算符>>C 11之前和之后的不同行为。
C 之前11
在 C 11 之前,>>使用 scanf 风格的解析机制。当提取失败时,它会保持 v 的值不变并设置失败位标志。
自 C 11
随着 C 11,>>>切换为使用 std::num_get 方面来解析输入。根据更新的规范,如果提取失败:
示例输出说明
在提供的示例中:
此行为与>的更新行为一致>在 C 11 中引入。
以上是为什么在 C 11 及更高版本中,'stringstream >>” 在提取失败时会将目标变量清零?的详细内容。更多信息请关注PHP中文网其他相关文章!