Txtファイルからデータを読んでコンソールにそのデータを表示する簡単なプログラムを作っているのですが、21行中14行目でおそらくEOFになってプログラムが終了してしまいます。どうやったら全部の行を読めるようになるのか、教えてください。お願いします。
int main() {
//データを表示するための関数
void outputline(char*, int, int, char*);
int i = 0;
char FlNo[8], FlType[5];
int Hr, Min;
ifstream inFile (conFilePath, ios::in);
while (inFile >> FlNo >> Hr >> Min >> FlType) {
outputline(FlNo, Hr, Min, FlType);
}
return 0;
}
以下はconFilePathに書かれているデータの内容です。
TG24 06 00 A747
UA345 06 05 A747
KL903 06 10 A747
CX600 06 15 A747
QF34 06 20 A767
QF100 06 25 A767
QF302 06 30 A747
JL98 06 35 A747
QF92 06 40 A767
PX03 06 45 A777
EM786 07 00 A777
SQ165 07 20 A747
QF98 07 30 A767
BA56 08 00 A747
QF97 09 30 D767
PX08 09 45 D777
QF303 09 50 A747
TG25 10 20 D747
QF6 10 45 D747
BA57 10 50 D747
SQ166 10 55 D747
No.1
- 回答日時:
> 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
とするのでしょうか?どちらにしても、同じエラーが出てしまったのです。何が原因なのでしょうか?
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 しなくても良いです。手もとの環境を確かめて見てください。
VC++6.0を使っています。decを使って書いたところ、うまくプログラムが動きました。ありがとうございました。
PS. setbase()がなぜ動かなかったかは未だに不明です…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ハンドルされていない例外が発...
-
2重定義って??
-
VB 関数
-
C++でboolにintの値を代入する...
-
構造体の宣言でエラーが出ます。
-
C言語のreturnの使い方
-
C言語にてsin,cosは何?
-
DWORDの実際の型は何でしょうか
-
配列を用いない最大値の求め方
-
エラー「invalid conversion fr...
-
C++のfor文について
-
VC6でlong longでエラー?
-
C言語の副作用に関する未定義
-
visualstudio C# テキストボッ...
-
変数の型を定義しなかった場合...
-
C言語エラーの解決法教えてくだ...
-
[C++]継承したクラスのコンスト...
-
2÷3などの余りについて
-
C言語で%を使わない余りの出し方
-
比較回数と交換回数表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
2重定義って??
-
long型の定数の末尾にLを付ける...
-
C++のfor文について
-
typedef enumの使い方を教えて...
-
関数の実体定義にヘッダファイ...
-
変数の型を定義しなかった場合...
-
ハンドルされていない例外が発...
-
C++でboolにintの値を代入する...
-
main.c:7:43: warning: implici...
-
プログラムの中で別のmainを呼...
-
【#define】 defineで定義した...
-
void func( void )について
-
構造体の要素すべてに対する四...
-
構造体の宣言でエラーが出ます。
-
C++の(左辺値)参照を参照渡し
-
main()とint main(void)の違い
-
intとINTの違いは?
-
DLLでLIBファイルが作成されない
おすすめ情報