ユーザー入力文とファイル内の単語を比較するプログラムを作成しています。私は、文章中の単語のどれかがファイル内にあるかどうかをプログラムに教えてほしい。stringstreamとifstreamを使用して、ファイル内の単語とユーザー入力を比較します。
私はgetlineを使用してユーザー入力文を取得しています。次にistringstreamを使用して文章を単語に切り詰めて、個々の単語をファイル内のすべての単語と比較しています。私のアプローチは、whileループを使用してファイル内のすべての単語を繰り返し、ユーザーが入力した文の現在の単語とファイル内の現在の単語を比較することです。現在のファイルの単語が現在の文の単語と同じ場合は、boolをtrueに設定し、そうでなければ、ファイルの次の単語にスキップして、その単語を次の単語と比較します。
istringstreamとifstreamの両方を取得して、whileループの次の単語にジャンプする方法がわかりません。どうすれば次の単語に反復することができますか?
編集:私はベクトルを使用せずにこれを行う必要があり、配列、など私の最初のアプローチは、ベクターを使用していたが、それは許可されていません。
あなたは次の操作を行うことができint main() {
string sentence;
string fileWord;
cout << "Input your sentence : " << endl;
getline(cin, sentence);
istringstream iss(sentence);
string sentenceWord;
ifstream adjectiveFile;
adjectiveFile.open("/project1.cpp/words/adjectives");
while(iss >> sentenceWord && adjectiveFile >> fileWord) {
if (sentenceWord == fileWord) {
cout << "The word " << sentenceWord << " is in the file" << endl;
bool adjectiveInSent = true;
} else {
}
}
adjectiveFile.close();
return 0;
}
あなたはそのようにそれを行うことはできません。ファイル全体をstd :: setに読み込み、セット内のstringstreamから抽出した単語を参照します。 –
'bool adjectiveInSent = true;'とは何ですか? –
は後で私は、ユーザーが文を入力するかどうかを確認する必要があり、プログラム内のローカル変数のスコープとは_laterz_はありません –