• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ifstreamの使い方)

ifstreamの使い方

このQ&Aのポイント
  • C++のifstreamを使用して、Txtファイルからデータを読み込み、コンソールに表示するプログラムを作成しています。
  • しかし、プログラムの実行中にEOFに達してしまい、途中で終了してしまいます。
  • どのようにすれば、すべての行を読み込むことができるのでしょうか?

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> setbaseを使うためにはiomanip.hを宣言すれば良いんですよね? そうです。 > ifstream inFile (.....); > inFile >> setbase(10); > ということでしょうか? そうです、こっちです。 読込む度に入れるとしたら dec というマニピュレータを使います。 こんな感じ。   while (inFile >> FlNo >> dec >> Hr >> dec >> Min >> FlType) { ん、「同じエラーが」と書いたのは、コンパイルエラーのことですか? STL は、Standard と名前がついていても、実装の種類がたくさんあります。 そのあたりの差かもしれません。 手元にある VC4.2 の iostream を見ると、setbase マニピュレータがありません。 dec マニピュレータはあるので、そちらを使ってみてください。 VC4.2 では dec マニピュレータは ios.h で宣言されているので、iomanip.h は include しなくても良いです。手もとの環境を確かめて見てください。

northcurlcurl
質問者

お礼

VC++6.0を使っています。decを使って書いたところ、うまくプログラムが動きました。ありがとうございました。 PS. setbase()がなぜ動かなかったかは未だに不明です…

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

> BA56 08 00 A747 この行を読もうとするときに 08 でエラーになります。 数値の定数表現を思い出してください。頭に 0x をつけると 16進数、頭に 0 をつけると 8進数表記になります。 istream は、特に指定が無ければ、この表記に基づいて整数の解釈をします。 これを明示的に 10進数だ、とするには setbase() マニピュレータを使います。 コンストラクタの直後に   inFile >> setbase(10); という行を追加してください。

northcurlcurl
質問者

お礼

早速の回答、ありがとうございます。setbaseを使うためにはiomanip.hを宣言すれば良いんですよね?すごく恥ずかしい質問なのですが、setbaseのところでundeclarerd identifierと、エラーが出るのです。setbaseはコンストラクタの直後に、とa-kumaさんは書かれていますが、それは ifstream inFile (.....); inFile >> setbase(10); ということでしょうか?それともwhileループの条件文で inFile >> FlNo >> setbase(10) >> Hr >> setbase(10) >> Min >> FlType とするのでしょうか?どちらにしても、同じエラーが出てしまったのです。何が原因なのでしょうか?

関連するQ&A