将 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 循环检查条件之前,中间没有任何代码行。有两种方法可以做到这一点:

  1. 在 while 循环之前和 while 循环结束时获取输入。

  2. 改用 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);