所以我基本上尝试了两种不同的方式。 while循环是完美的,但它存储了"。"在我不想做的向量中,但它是退出循环的唯一方法。
第二个具有复制功能;我不知道如何打破或退出。 我相信这会有所帮助。
我可以在调查中得到一些指示吗? 谢谢
while (keyinput != ".")
{
cin >> keyinput;
words.push_back(keyinput);
}
copy(std::istream_iterator<string>(cin),
std::istream_iterator<string>(),
back_inserter(words));
答案 0 :(得分:2)
您只需要重新排序,以便在push_back之前完成检查
cin >> keyinput;
while (keyinput != ".")
{
words.push_back(keyinput);
cin >> keyinput;
}
答案 1 :(得分:2)
让我们一次分析您的代码:
检查输入中的"."
while (keyinput != ".") {
获取下一个输入
cin >> keyinput;
添加输入矢量
words.push_back(keyinput);
}
请注意,当用户最终输入"."
时,它将被添加到矢量中。
通常,任何影响while循环条件的代码都应该在while循环检查条件之前,而中间没有任何代码行。有两种方法可以实现这一目标:
在while循环之前和while循环结束时立即获取输入。
改为使用do
.. while
循环。
答案 2 :(得分:1)
因为您不想将.
存储到矢量中。您必须在value
循环内输入之前插入while
。
std::cin >> keyinput;
while(keyinput != ".") {
words.push_back(keyinput);
std::cin >> keyinput;
}
答案 3 :(得分:1)
使用do...while
循环:
do {
if (!(cin >> keyinput)) {
// error handling...
break;
}
if (keyinput == ".") break;
words.push_back(keyinput);
}
while (true);