C++ 如何生成存储在向量中的字符串数组

C++ 如何生成存储在向量中的字符串数组,c++,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!=NUL

我正在尝试这样的事情:

#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.
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串输入str;
向量向量向量机;
cin.getline(inputStr,200);
int i=0;
while(inputStr!=NULL){//除非读取了所有数据。
strVector[i]=getline(inputStr,“”);
i++;
}//一会儿。

对于(int j=0;j我想你在寻找
std::vector
模板的方法我想你在寻找
std::vector
模板的方法很多涉及inputString的代码都是无效的。
istream
的getline成员没有接受
std::string
,因此这是无效的:

cin.getline(inputStr,200);
strVector[i]=getline(inputStr," ");
您需要的是全局getline:

getline(cin, inputStr);
其次,没有直接从
std::string
读取的全局getline,因此这是无效的:

cin.getline(inputStr,200);
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);

如果您想在空白(包括制表符)上划界,则可以使用
运算符>>
而不是getline。

您的许多涉及inputString的代码是无效的。
istream
的getline成员都没有使用
std::string
,因此这是无效的:

cin.getline(inputStr,200);
strVector[i]=getline(inputStr," ");
您需要的是全局getline:

getline(cin, inputStr);
其次,没有直接从
std::string
读取的全局getline,因此这是无效的:

cin.getline(inputStr,200);
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);
如果要在空格(包括制表符)上划界,则可以使用
运算符>>
而不是getline。

还有另一种方法:

#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);
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
向量strVec;
字符串str;
cout还有另一种方法:

#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);
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
向量strVec;
字符串str;

请尝试使用
push_back
方法:
strVector.push_back(getline(inputStr,”);
对…您的语法对std::map有效,但对std::vector无效。使用push_back。我可以问一个显然不太明显的问题吗?
getline(inputStr,”)是什么
doing?如果您只想从
cin
加载带有空格分隔字符串的向量,有更简单的方法。尝试使用
push_back
方法:
strVector.push_back(getline(inputStr,”))
对……您的语法对std::map有效,但对std::vector无效。请使用push_back。我可以问一个显然不太明显的问题吗?什么是
getline(inputStr,”)
做什么?如果你想简单地从
cin
加载一个带有空格分隔字符串的向量,有更简单的方法。+1和/或
istream\u迭代器
iss
back\u inserter
将字符串推到strVector中。@Benjamin Lindley.你能用注释解释一下你的想法吗ng在istringstream的第二行要做什么。@AzkaAhmad:我会的,但我现在必须离开。看一看。或者其他人会解释。@AzkaAhmad这是从(cin)读取的完整行,然后将其加载到stringstream中,以将空格分隔的内容提取到单个字符串中,然后将这些字符串推送到向量中。我希望这是有意义的。这样,您就可以在一行中键入多个单词,按enter键,然后将这些单词拆分为单个字符串并收集到向量中。@WhozCraig我需要添加一个库吗因为在PUTTY中我得到了这个错误“variable–std::istringstream iss–有初始值设定项,但类型不完整”+1和/或一个
istream\u迭代器
iss
和一个
back\u inserter
将字符串塞进strVector。@Benjamin Lindley.你能用注释解释一下你在第二行使用istringstream时想做什么吗。@AzkaAhmad:我会的,但我现在必须离开。看看。或者其他人会解释。@AzkaAhmad这是从(cin)读取的完整行,然后将其加载到stringstream中,以将空格分隔的内容提取到单个字符串中,然后将这些字符串推送到向量中。我希望这是有意义的。这样,您就可以在一行中键入多个单词,按enter键,然后将这些单词拆分为单个字符串并收集到向量中。@WhozCraig我需要添加一个库吗因为在PUTTY中我得到了这个错误“variable–std::istringstream iss–有初始值设定项,但类型不完整”