【发布时间】:2018-06-10 04:52:30
【问题描述】:
我目前正在练习使用字符串流从字符串中提取值。在这个简单的代码中,用户输入一个名字和一个数字(用空格分隔),这个字符串存储在“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;
}
问题:只有第一次输入的输入的数字存储在“金额”中。下一个输入的数字不会存储在“数量”中(数量总是在里面有相同的数字)。也许,关于字符串流,我有些不了解...
【问题讨论】:
-
如果代码显示两个输入值,即
amount和name,将更容易看到发生了什么。 -
我检查了名称,但打印不正确。只打印输入的第一个名字,就像数字一样,只打印第一个输入的数字。不管你循环多少次。
-
@AnselmoGPP 使用一次后需要重置
std::stringstream。
标签: c++ for-loop stringstream