多个输入到相同的字符串c ++中

时间:2013-01-30 04:20:19

标签: c++ sentinel

我正在尝试编写一个c ++程序,提示输入几个1字输入,直到输入一个标记值。一旦输入该值(即“完成”),程序就应输出用户输入的所有单词。

我有一般格式;但是,这不会为字符串存储多个值...任何帮助都会很棒,谢谢。

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    string word;
    word = "";
    cout << "Enter the next bla bla now:   " ;
    cin >> word;


    while ( word != "complete" )
    {
        cout << "The previous bla bla was:  " << word << endl;
        cout << "Enter the next bla bla now: ";
        cin >> word;

    }

    cout << "Your phrase..bla bla bla is :  " << word << endl;

    return 0;
}

3 个答案:

答案 0 :(得分:1)

您可以将结果存储到矢量中,然后循环遍历它们:

#include <iostream>
#include <string>
#include <vector>

int main() {
    std::string str;
    std::vector<std::string> strings;
    while(std::getline(std::cin,str) && str != "complete") {
        strings.push_back(str);
    }
    std::cout << "Your strings are: \n";
    for(auto& i : strings)
        std::cout << i << '\n';
}

这段代码的作用是不断询问用户输入,直到找到“完成”一词,并且它不断插入输入到矢量容器中的字符串。输入“完成”一词后,循环结束,它将打印出矢量的内容。

请注意,这使用C ++ 11 for-range循环,可以使用迭代器替换,std::copy替换为std::ostream_iterator

答案 1 :(得分:1)

您可能希望使用集合字符串将这些单词连接起来。简而言之......

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    string word;
    string allWords = "";

    word = "";
    cout << "Enter the next bla bla now:   " ;
    cin >> word;


    while ( word != "complete" )
    {
        allWords += word + " ";
        cout << "The previous bla bla was:  " << word << endl;
        cout << "Enter the next bla bla now: ";
        cin >> word;
    }

    cout << "Your phrase..bla bla bla is :  " << allWords << endl;

    return 0;
}

修改

回想起来,使用向量在以后更有用,并允许您为了其他目的迭代这些单词。我的解决方案只有在出于某种原因你想将这些单词编译成一个句子时才有用。

答案 2 :(得分:1)

您可以使用std::vector<std::string>来存储字词,代码下方可以对您自己的代码进行微小更改:

#include <vector>
#include <string>
#include <iostream>
#include <iterator>

int main()
{
    std::vector<std::string> words;
    std::string word;
    std::cout << "Enter the next bla bla now:   " ;

    while (std::cin >> word && word != "complete" )
    {
      words.push_back(word);
      std::cout << "You entered:  " << word << std::endl;
    }

    std::cout << "Your word collection is:  " << std::endl;
    std::copy(words.begin(), words.end(), 
              std::ostream_iterator<std::string>(std::cout, " "));

    return 0;
}