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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
C++でboolにintの値を代入する...
-
変数の型を定義しなかった場合...
-
long型の定数の末尾にLを付ける...
-
2重定義って??
-
main.c:7:43: warning: implici...
-
間違っていないような気がする...
-
APIENTRY と WINAPI
-
inline
-
戻り値について
-
このプログラムについて。
-
C言語のコンパイルエラー
-
戻り値の型??
-
sshdログの意味
-
typedef enumの使い方を教えて...
-
コンパイルすると error C1083 ...
-
intとINTの違いは?
-
C++のfor文について
-
C言語で分割ファイル先の関数を...
-
HINSTANCEの型
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
2重定義って??
-
long型の定数の末尾にLを付ける...
-
typedef enumの使い方を教えて...
-
main.c:7:43: warning: implici...
-
C++でboolにintの値を代入する...
-
構造体の要素すべてに対する四...
-
intとINTの違いは?
-
ハンドルされていない例外が発...
-
DDVによるメッセージの変更
-
変数の型を定義しなかった場合...
-
【#define】 defineで定義した...
-
C++ クラスをメンバにもつクラ...
-
構造体の宣言でエラーが出ます。
-
プログラムの中で別のmainを呼...
-
void func( void )について
-
エラー「invalid conversion fr...
-
関数の実体定義にヘッダファイ...
おすすめ情報