アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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 しなくても良いです。手もとの環境を確かめて見てください。
    • good
    • 0
この回答へのお礼

VC++6.0を使っています。decを使って書いたところ、うまくプログラムが動きました。ありがとうございました。

PS. setbase()がなぜ動かなかったかは未だに不明です…

お礼日時:2002/04/06 06:08

> BA56 08 00 A747



この行を読もうとするときに 08 でエラーになります。

数値の定数表現を思い出してください。頭に 0x をつけると 16進数、頭に 0 をつけると 8進数表記になります。
istream は、特に指定が無ければ、この表記に基づいて整数の解釈をします。

これを明示的に 10進数だ、とするには setbase() マニピュレータを使います。
コンストラクタの直後に

  inFile >> setbase(10);

という行を追加してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/04/05 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!