- ベストアンサー
ifstreamの使い方
- C++のifstreamを使用して、Txtファイルからデータを読み込み、コンソールに表示するプログラムを作成しています。
- しかし、プログラムの実行中にEOFに達してしまい、途中で終了してしまいます。
- どのようにすれば、すべての行を読み込むことができるのでしょうか?
- みんなの回答 (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 しなくても良いです。手もとの環境を確かめて見てください。
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
> BA56 08 00 A747 この行を読もうとするときに 08 でエラーになります。 数値の定数表現を思い出してください。頭に 0x をつけると 16進数、頭に 0 をつけると 8進数表記になります。 istream は、特に指定が無ければ、この表記に基づいて整数の解釈をします。 これを明示的に 10進数だ、とするには setbase() マニピュレータを使います。 コンストラクタの直後に inFile >> setbase(10); という行を追加してください。
お礼
早速の回答、ありがとうございます。setbaseを使うためにはiomanip.hを宣言すれば良いんですよね?すごく恥ずかしい質問なのですが、setbaseのところでundeclarerd identifierと、エラーが出るのです。setbaseはコンストラクタの直後に、とa-kumaさんは書かれていますが、それは ifstream inFile (.....); inFile >> setbase(10); ということでしょうか?それともwhileループの条件文で inFile >> FlNo >> setbase(10) >> Hr >> setbase(10) >> Min >> FlType とするのでしょうか?どちらにしても、同じエラーが出てしまったのです。何が原因なのでしょうか?
お礼
VC++6.0を使っています。decを使って書いたところ、うまくプログラムが動きました。ありがとうございました。 PS. setbase()がなぜ動かなかったかは未だに不明です…