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が、i番目の文字列をpush_backできます。

4

3 に答える 3

3

inputString を含むコードの多くは無効です。を受け取る getline メンバーがないistreamためstd::string、これは無効です。

cin.getline(inputStr,200);

代わりに必要なのは、グローバル getline です。

getline(cin, inputStr);

次に、 から直接読み取るグローバルな 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 に答える