我正在尝试这样的事情:
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int main()
{
string inputStr;
vector <string> strVector;
cin.getline(inputStr,200);
int i=0;
while (inputStr!=NULL){ //unless all data is read.
strVector[i]=getline(inputStr," ");
i++;
}//while.
for (int j=0; j<strVector.size(); j++){
cout<< strVector[j];
cout<<endl;
}
} //main.
任何可以提供帮助的人。我试图将我的输入字符串存储在vector
字符串中,然后我可以push_back我的第i个字符串。
答案 0 :(得分:3)
涉及inputString的大部分代码都无效。 istream
的getline成员没有std::string
,因此无效:
cin.getline(inputStr,200);
你想要的是全球获取线:
getline(cin, inputStr);
其次,没有直接从std::string
读取的全局getline,因此这是无效的:
strVector[i]=getline(inputStr," ");
您想要使用的是istringstream
。总而言之,您的代码可能如下所示:
std::getline(std::cin, inputStr);
std::istringstream iss(inputStr);
std::string word;
// read from the istringstream until failure
while (std::getline(iss,word,' '))
strVector.push_back(word);
如果要分隔空格(包括制表符),则可以使用operator>>
代替getline。
答案 1 :(得分:1)
我认为您正在寻找std::vector
模板
push_back
方法
答案 2 :(得分:0)
这是另一种方式:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(int argc, char *argv[])
{
vector<string> strVec;
string str;
cout<<"Enter # to quit \n\n";
int i=0;
while (str!="#")
{
cout<<"Input text No. "<<i+1 <<" here > ";
cin>>str ;
strVec.push_back(str);
i++;
}
cout<<"\nStored text\n----------\n";
for (int j=0; j<strVec.size()-1; j++) cout<<j+1<<" "<< strVec[j]<<"\n";
cout<<"\n\n";
return(0);
}