gpt4 book ai didi

c++ - 在循环中使用 stringstream 从几个字符串中提取数字

转载 作者:太空狗 更新时间:2023-10-29 21:11:22 32 4
gpt4 key购买 nike

我目前正在练习使用字符串流从字符串中提取值。在这个简单的代码中,用户输入一个名字和一个数字(用空格分隔),这个字符串存储在“input”中。然后,它被传递给“stream”,它将名称和号码分开,存储在“name”和“number”中。然后,用 std::cout 输出数字。这个过程用不同的名字和数字完成了几次。

#include <sstream>
#include <iostream>

int main() {
std::string input;
std::stringstream stream;
std::string name;
double amount;

for (;;) {
std::getline(std::cin, input); // enter a name, a whitespace and a number
stream.str(input);
stream >> name >> amount; // problem here
std::cout << amount << std::endl;

}
return 0;
}

问题:只有第一个输入的数字存储在“金额”中。下一次输入的数字不会存储在“金额”中(金额始终在内部具有相同的数字)。也许,关于 stringstreams 有一些我不知道的东西......

最佳答案

Problem: Only the number of the first entered input is stored in "amount". The numbers of the next inputs will not be stored in "amount" (amount always has the same number inside). Maybe, there is something I don't know about stringstreams...

是的。使用一次后,您忘记了重置 std::stringstream

为此,您需要使用 std::stringstream::str底层序列(字符串流的内容)设置为空字符串还有 fail(如果有的话)和 eof 标志 clear .

这意味着,在您的 for 循环结束时,您需要这样: SEE LIVE

int main()
{
....
....
for (;;)
{
...
...
stream.str( std::string() ); // or stream.str("");
stream.clear();
}
return 0;
}

关于c++ - 在循环中使用 stringstream 从几个字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50780656/

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