char ch;
//Get data from user
cout << "Enter your sentence on one line followed by a # to end it: " << endl;
while (cin >> character && character != '#')
{
cin.get(ch);
ch = static_cast<char>(toupper(ch));
outFile << ch;
if (character == 'A' || character == 'E' || character == 'I' || character == 'O'
|| character == 'U')
{
vowelCount ++;
}
}
outFile << "number of vowels: " << vowelCount << endl;
文章を入力しようとしていますが、いくつの母音、空白、その他の文字が読み込まれていますか。しかし、vowelCountは正しいとは言えませんし、同じ文を出力ファイルに書き込むこともできません。何かヒント?C++の単純なIO母音カウントプログラム
:すべてを行う必要がある。この
:これらのステートメントの両方が標準入力から文字を消費します。なぜ 'ch 'で再度読むのでしょうか?また、母音が何であり、母音がいくつあるかを読むこともできます。 – pmr
さらに悪いことに、「文字」を読み込むだけで先頭のスペースもスキップされました! 'cin.get(ch)'のようなものを使いたいだけです。もう一つの問題は、 'toupper()'への引数は正の整数でなければならないが、 'char'には署名できるということです。私の名前はあなたのプログラムをクラッシュさせる可能性があります。あなたは 'toupper(static_cast(ch))'のようなものを使いたいと思っています。 –
'cin >> character'演算子を使うと、文字変数の標準入力から1文字を読み込みます。 'cin.get(ch)'を実行すると、2番目の文字がch変数に読み込まれます。これらの操作のいずれかを実行するだけです。 'cin.get(ch)'行を削除し、 '文字'へのすべての参照を 'ch'に置き換えてみてください。 – mmodahl