0

我正在尝试这样的事情:

#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 个字符串。

4

3 回答 3

3

您的大部分涉及 inputString 的代码都是无效的。没有 getline 成员istream需要 a std::string,所以这是无效的:

cin.getline(inputStr,200);

你想要的是全局getline:

getline(cin, inputStr);

其次,没有直接从 a 读取的全局 getline std::string,因此这是无效的:

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 来代替。

于 2012-11-20T14:04:54.960 回答
1

我想你正在寻找模板的push_back方法std::vector

于 2012-11-20T13:55:35.433 回答
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);
}
于 2012-11-20T14:26:16.873 回答