ここでの根本的な問題であると思われる作品がどのように機能するかはよくわかりません。while(cin>>x) に関する以前の投稿をいくつか読んだことがありますが、私の質問に実際に答えているものは何もないようです。このループを使用して、テキスト データを読み取ります。
while (cin >> x){
searchText.push_back(x);
}
しかし、コードの後半で、次を使用して単一の単語を読み取ろうとしています。
cout << "Please enter your target word: ";
string targetWord;
cin >> targetWord;
しかし、上記のwhile loop/eofは2番目のコードスニペットを台無しにするようです(2番目のコードスニペットを上に移動すると、すべて正常に動作しますが、明らかにそれは私がやろうとしていることではありません)
編集 明確にするために完全なコードを次に示します。
int main()
{
// ask for the target word
// cout << "Please enter your target word: ";
// string targetWord;
// cin >> targetWord;
// ask for and read the search text
cout << "Enter the complete search text, "
"followed by end-of-file: ";
vector<string> searchText;
string x;
while (cin >> x){
searchText.push_back(x);
}
// check that some text was entered
typedef vector<string>::size_type vec_sz;
vec_sz size = searchText.size();
if (size == 0){
cout << endl << "You must enter some text. "
"Please try again." << endl;
return 1;
}
// ask for the target word
cin.clear();
cout << "";
cout << "Please enter your target word: ";
string targetWord;
cin >> targetWord;
int count = 0;
for (int i=0; i<size; ++i){
if (targetWord == searchText[i]){
count++;
}
}
cout << "The target word [" << targetWord << "] was "
"in the search text " << count << " times." << endl;
return 0;
}
ユーザーからテキストを取り込もうとしています...次に検索単語を入力し、入力されたテキストにその単語が何回出現するかを確認します(非常に簡単です!)
別の方法で実行できることはわかっていますが、ここでの質問は、以前に EOF が含まれていた後に cout/cin ストリームを再度使用する方法についてです。