私はC++の初心者で、現在ベクトルを学習しています。ここでは、プログラムがユーザーの入力やベクトルに格納を取得し、各要素から格納された値を印刷するために進んで簡単なコードです:C++はユーザー入力から文字列をベクトルに格納します
int main(){
vector<string> myVector;
string myInput;
int n;
cin>>n;
cin.ignore(numeric_limits<streamsize>::max(),'\n');
for(int i = 1; i <= n;i++){
cout<<"loop count: "<<i<<endl; //added for checking the current loop
getline(cin, myInput);
cin.ignore(numeric_limits<streamsize>::max(),'\n');
myVector.push_back(myInput);
}
for(unsigned int j = 0;j < myVector.size(); j++){
cout<<myVector[j]<<endl;
}
return 0;
}
は、私は、ユーザの文字列入力中に、自分のコードを実行すると、それはすることができます私は最終的に次のループに行く前に2つの文字列を入力します。プログラムは各ループに対して最初に入力された文字列を出力します。だから私の質問は:
1)これの背後にある理由は何ですか?なぜ次のループに行く前に2つの文字列を入力する必要がありますか?誰かが私に説明することはできますか?
2)これはどのように修正できますか?
編集:ここに私のサンプル入力と出力は、次のとおりです。
入力:
3
input loop count: 1
we are
the champions
input loop count: 2
no time
for losers
input loop count: 3
we are
the champions
出力:
we are
no time
we are
あなたの問題については、あなたがプログラムに与えた入力と、実際の出力と期待される出力を教えてください。しばらく時間を取って[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)を参照してください。 –
'getline'はスペースを含めて一行全体を取得します。スペースは、文字列内にある完全に有効な文字です... – doctorlove