将 cin 字符串转换为 Vector (c++)
cin strings into a Vector (c++)
所以我基本上是在尝试用两种不同的方式来做同样的事情。
while 循环是完美的,但它存储了“.”。在我不想做的向量中,但它是退出循环的唯一方法。
第二个带复制功能;我不知道如何打破或退出。
我相信这会对其他人有所帮助。
我可以在调查中得到一些指示吗?
谢谢
while (keyinput != ".")
{
cin >> keyinput;
words.push_back(keyinput);
}
copy(std::istream_iterator<string>(cin),
std::istream_iterator<string>(),
back_inserter(words));
您只需要重新订购,以便在 push_back
之前完成检查
cin >> keyinput;
while (keyinput != ".")
{
words.push_back(keyinput);
cin >> keyinput;
}
让我们一次分析一行代码:
在输入
中检查"."
while (keyinput != ".") {
获取下一个输入
cin >> keyinput;
添加向量输入
words.push_back(keyinput);
}
请注意,当用户最终输入一个"."
时,它将被添加到向量中。
一般来说,任何影响 while 循环条件的代码都应该紧接在 while 循环检查条件之前,中间没有任何代码行。有两种方法可以做到这一点:
在 while 循环之前和 while 循环结束时获取输入。
改用 do
..while
循环。
因为您不想将 .
存储到向量中。您必须在 while
循环中输入之前插入 value
。
std::cin >> keyinput;
while(keyinput != ".") {
words.push_back(keyinput);
std::cin >> keyinput;
}
使用 do...while
循环:
do {
if (!(cin >> keyinput)) {
// error handling...
break;
}
if (keyinput == ".") break;
words.push_back(keyinput);
}
while (true);
所以我基本上是在尝试用两种不同的方式来做同样的事情。 while 循环是完美的,但它存储了“.”。在我不想做的向量中,但它是退出循环的唯一方法。
第二个带复制功能;我不知道如何打破或退出。 我相信这会对其他人有所帮助。
我可以在调查中得到一些指示吗? 谢谢
while (keyinput != ".")
{
cin >> keyinput;
words.push_back(keyinput);
}
copy(std::istream_iterator<string>(cin),
std::istream_iterator<string>(),
back_inserter(words));
您只需要重新订购,以便在 push_back
之前完成检查cin >> keyinput;
while (keyinput != ".")
{
words.push_back(keyinput);
cin >> keyinput;
}
让我们一次分析一行代码:
在输入
中检查"."
while (keyinput != ".") {
获取下一个输入
cin >> keyinput;
添加向量输入
words.push_back(keyinput);
}
请注意,当用户最终输入一个"."
时,它将被添加到向量中。
一般来说,任何影响 while 循环条件的代码都应该紧接在 while 循环检查条件之前,中间没有任何代码行。有两种方法可以做到这一点:
在 while 循环之前和 while 循环结束时获取输入。
改用
do
..while
循环。
因为您不想将 .
存储到向量中。您必须在 while
循环中输入之前插入 value
。
std::cin >> keyinput;
while(keyinput != ".") {
words.push_back(keyinput);
std::cin >> keyinput;
}
使用 do...while
循环:
do {
if (!(cin >> keyinput)) {
// error handling...
break;
}
if (keyinput == ".") break;
words.push_back(keyinput);
}
while (true);