在C ++中显示字符串向量

Rud*_*ose 2 c++ vector push-back

很抱歉,如果这是一个重复的问题,但我已经尝试寻找答案,空手而归。因此,基本上我只想在向量的后面添加字符串(单个单词),然后将存储的字符串显示为单个字符串。我真是个菜鸟。

#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;


int main(int a, char* b [])
{
    vector<string> userString;      
    string word;        
    string sentence = "";           
    for (decltype(userString.size()) i = 0; i <= userString.size() - 1; i++)
    {
        cin >> word;
        userString.push_back(word);
        sentence += userString[i] + " ";
    }
    cout << sentence;
    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么不起作用?

编辑

int main(int a, char* b [])
{
    cout << "Enter a sequence of words. Enter '.' \n";
    vector<string> userString;      
    string word;                    
    string sentence = "";           /
    int wordCount = 0;
    while (getline(cin, word))
    {
        if (word == ".")
        {
            break;
        }
        userString.push_back(word);
    }
    for (decltype(userString.size()) i = 0; i <= userString.size() - 1; i++)
    {
        sentence += userString[i] + " ";
        wordCount += 1;
        if (wordCount == 8)
        {
            sentence = sentence + "\n";
                    wordCount = 0;
        }
    }
    cout << sentence << endl; 
    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

因此,我的新程序有效。它只是将值放在向量的后面,并将它们打印出8个单词到一行中。我知道有更简单的方法,但是我只是在学习向量,而且我会一步步走。感谢您的帮助。

jua*_*nza 6

vector<string> userString有 size 0,所以永远不会进入循环。您可以从给定大小的向量开始:

vector<string> userString(10);      
string word;        
string sentence;           
for (decltype(userString.size()) i = 0; i < userString.size(); ++i)
{
    cin >> word;
    userString[i] = word;
    sentence += userString[i] + " ";
}
Run Code Online (Sandbox Code Playgroud)

尽管尚不清楚为什么您需要该向量:

string word;        
string sentence;           
for (int i = 0; i < 10; ++i)
{
    cin >> word;
    sentence += word + " ";
}
Run Code Online (Sandbox Code Playgroud)

如果您不想对输入单词的数量有固定限制,您可以std::getlinewhile循环中使用,检查特定输入,例如"q"

while (std::getline(std::cin, word) && word != "q")
{
    sentence += word + " ";
}
Run Code Online (Sandbox Code Playgroud)

这将添加单词,sentence直到您输入“q”。


Ole*_*siy 6

因为userString为空。你只声明

vector<string> userString;     
Run Code Online (Sandbox Code Playgroud)

但永远不要添加任何内容,因此for循环甚至不会运行。