【发布时间】:2020-08-01 00:12:46
【问题描述】:
有一个练习动态地要求用户输入并存储在向量中,但我不知道如何结束字符串输入。这本书说它是 Ctrl+Z 但它不起作用。我正在使用 Visual Studio 2019,我知道它应该可以工作,因为当我更改整数的变量时它可以工作。
int main(void) {
std::vector<std::string> words;
for (std::string palabras; std::cin >> palabras;)
words.push_back(palabras);
std::string ban = "broccoli";
for (std::string x : words)
if (x == ban) std::cout << "Bleep!" << '\n';
else std::cout << x << '\n';
}
【问题讨论】:
-
for不适用于这些情况。使用while而不是for。for循环通常在您知道要执行多少次循环迭代时使用 - 或者它是可计算的。while循环或do...while循环在这里比for循环更合适,因为您不知道用户想要执行多少次循环。 -
尝试点击
<enter>刷新缓冲区,然后点击<ctrl>-z发送流结束信号。 -
我这样做了,但是在 CTRL+Z 之后必须按
。感谢您的信息 -
另一种方法是在外部将数据通过管道传输到标准输入
echo "one two three four" > app.exe -
@Andy 我不同意。我认为 for 循环在这里非常合适,因为它允许我们方便地限制字符串变量的范围,它只在循环中使用。 for 循环通常用于已知次数的迭代,但没有理由不将其用于其他事情。