私はなぜwhileループでcin.get()
を使用しなければならないのか分かりません。 whileループの前にcin.get()
を使用すると、cin.get()
と同じことがwhileループ中に実行されます。スペースを考慮しながら入力した文字列を読み込みます。しかし、明らかにこのプログラムでは、すべてのテキストをベクトルにプッシュしようとしています。私がcin.get(next)
をwhileループから除外し、line.push_back(next)
しか持っていなかった場合、プログラムはエラーを返し、クラッシュします。whileループでcin.get()を使用する目的は何ですか?
なぜこれを行うのか説明してください。ありがとうございました
//Demonstration of the generic find function
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
vector<char> line;
cout << "Enter a line of text: \n";
char next;
cin.get(next);
while(next != '\n')
{
line.push_back(next);
cin.get(next);
}
return 0;
}
['std :: basic_istream :: get'](http://en.cppreference.com/w/cpp/io/basic_istream/get)について読んで始めてください。プログラムが何をしているのか理解できない場合、プログラムが何をするのか理解できません。関連するコードにはバグがあります。偶然にストリームがエラー状態になると、決して来ない改行を探す無限にループします。 – WhozCraig
これは入力を取得します。混乱がどこから来ているかわからないデバッガでコードを実行して、実際に何が実行されているかを確認する必要があります。 – NathanOliver
ループを何度も実行するには、ループで使用します。ループからその行を削除した場合、ループしているすべての行は、同じ文字を繰り返してベクトルに何度も繰り返していきます。 whileループの終了条件は、入力された場合は決して来ないことに注意してください。 –