0

我正在尝试编写一个 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;
}
4

3 回答 3

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::copywith替换它std::ostream_iterator

于 2013-01-30T04:23:33.303 回答
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;
}

编辑

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

于 2013-01-30T04:23:42.870 回答
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;
}
于 2013-01-30T04:23:43.873 回答