gpt4 book ai didi

c++ - istringstream 转换的不当行为

转载 作者:行者123 更新时间:2023-11-30 02:42:06 26 4
gpt4 key购买 nike

当我尝试使用 istringstream 从输入中提取有效数字时,我从 istringstream 得到以下错误行为:
例如:

void extract(void)
{
double x;
string line, temp;

getline(cin, line);
istringstream is(line);
while(is >>temp)
{
if(istringstream(temp) >>x)
{std::cout<<"number read: "<<x<<endl;}
}

输入:1 2 3rd 4th

输出:

number read: 1
number read: 2
number read: 3
number read: 4

不当行为是 istringstream 将字符串 3rd 转换为数字 3。
为什么 istringstream 这样做以及如何避免这种情况?

最佳答案

这是因为您从流中读取了 数字

>>> 运算符从流中提取 "3rd",并尝试将其转换为 double,但由于只有第一个字符串的字符是数字,它只能解析"3",并简单地丢弃非数字字符。

如果您想要 "3rd",那么您需要将其作为字符串读取。

关于c++ - istringstream 转换的不当行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27421575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com