OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

cout関数を使っているのですが,画面に出力されません。

  • 暇なときにでも
  • 質問No.161528
  • 閲覧数908
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 55% (10/18)

いつもお世話になっております。今回はC++言語について質問があります。
次のプログラムは画面から入力された文字の数とリターンの数を数えるプ
ログラムです。

/* 入力の文字数を数えるプログラム */
#include <iostream.h>
int main(int argc, char **argv){
char c;
int RETcount = 0; //改行数
int CHARcount = 0; //文字数

while(cin.get(c)){
if(c == '\n'){
++RETcount;
}
else{
++CHARcount;
}
}

cout << "RET:" << RETcount << '\n'; //(1) ここの部分が表示されません。
cout << "CHAR:" << CHARcount << '\n';//(2) ここの部分は表示されます。

return 0;
}

何故か(1)の部分が表示されません(^^;
いきなり(2)の部分が表示されます。
そこで(1)(2)の部分を下記の(3)(4)(5)に書換え

cout << "RET:" << RETcount << '\n'; //(3)
cout << "RET:" << RETcount << '\n'; //(4)
cout << "CHAR:" << CHARcount << '\n'; //(5)

実行した所(4)と(5)の部分は表示されるのですが,
(3)の部分が表示されません。
つまりwhile{・・・・・}の直後のcoutが表示されません。
while(cin.get(c))で何かが起こっているのでしょうか????(^^;
使用環境は,Windowsで入力の終了は[Ctrl + Z]で行っています。
ご存知の方どうかご指導よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 75% (398/526)

以下の環境で試したところ、問題の状況が再現しました^^;
・Windows98 + Borland C++ 5.5.1 for Win32

Ctrl+Zがあると、次の1行が表示されない(消される?)ようです。
多分MS-DOSのコンソール入出力制御が、そういう仕様なのでしょう。
ためしに出力をテキストファイルにリダイレクトしたところ、ちゃんと
RET:2
CHAR:8
と書き込まれていましたから。
__sourin__さんも、DOS窓から「実行ファイル名 > test.txt」などとして、確認してみて下さい。

というわけで、(1)の前に、
cout << endl;
としてやれば、DOS窓上で実行しても大丈夫みたいですね。
(C++では、'\n'の代わりにendlをcoutへ食わせても、改行になります。)
お礼コメント
__sourin__

お礼率 55% (10/18)

leaz024さんお返事どうもありがとうございます^^

ホントだ~!リダイレクトを使うと正しく表示されました。
逆に「実行ファイル名 < 入力データ.txt」でもDOS窓上に正しく表示されました。

leaz024さんのおしゃられた
>MS-DOSのコンソール入出力制御が、そういう仕様なのでしょう。
など,調べてもう少し原因を探ってみようと思います。

進展があり次第投稿しますので,またご指導よろしくお願いします^^
ありがとうございました^^
投稿日時 - 2001-11-08 03:22:13
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 41% (324/772)

以下の環境で試しましたが、 ・Linux-2.2.14 + egcs-2.91.66 ・Windows2000 + Borland C++ 5.5.1 for Win32 全く問題ありませんでしたよ。 あなたの環境が何かはわかりませんが、少なくともソースコード的には何の問題も無いようです。 ...続きを読む
以下の環境で試しましたが、
・Linux-2.2.14 + egcs-2.91.66
・Windows2000 + Borland C++ 5.5.1 for Win32
全く問題ありませんでしたよ。

あなたの環境が何かはわかりませんが、少なくともソースコード的には何の問題も無いようです。
補足コメント
__sourin__

お礼率 55% (10/18)

お返事どうもありがとうございます^^

使用環境はWin98でVisual C++ 6.0を使っています。
>全く問題ありませんでしたよ。
とは(1)の部分も省略されず正常に動くという事なのでしょうか?

予定では
abcd[return]
abcd[return]
[Ctrl + Z]
RET:2
CHAR:8
となるはずなのに

私のものだと
abcd[return]
abcd[return]
[Ctrl + Z]
CHAR:8
と表示されてしまうのです。

>少なくともソースコード的には何の問題も無いようです。
私もそう思うのですが何故なのでしょうね?(^^;
投稿日時 - 2001-11-02 12:37:55


このQ&Aのテーマ
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ