将字符串转换为Vector(c ++)

时间:2016-08-13 22:26:05

标签: c++ vector cin

所以我基本上尝试了两种不同的方式。 while循环是完美的,但它存储了"。"在我不想做的向量中,但它是退出循环的唯一方法。

第二个具有复制功能;我不知道如何打破或退出。 我相信这会有所帮助。

我可以在调查中得到一些指示吗? 谢谢

while (keyinput != ".")
{
    cin >> keyinput;
    words.push_back(keyinput);
}

copy(std::istream_iterator<string>(cin),
    std::istream_iterator<string>(),
    back_inserter(words));

4 个答案:

答案 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循环检查条件之前,而中间没有任何代码行。有两种方法可以实现这一目标:

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

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