如何使一个字符串数组存储在一个向量中

时间:2012-11-20 13:52:03

标签: c++

我正在尝试这样的事情:

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

3 个答案:

答案 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);
}