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个单词到一行中。我知道有更简单的方法,但是我只是在学习向量,而且我会一步步走。感谢您的帮助。
你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::getline在while循环中使用,检查特定输入,例如"q":
while (std::getline(std::cin, word) && word != "q")
{
sentence += word + " ";
}
Run Code Online (Sandbox Code Playgroud)
这将添加单词,sentence直到您输入“q”。
因为userString为空。你只声明
vector<string> userString;
Run Code Online (Sandbox Code Playgroud)
但永远不要添加任何内容,因此for循环甚至不会运行。
| 归档时间: |
|
| 查看次数: |
68416 次 |
| 最近记录: |