書式設定されたファイル入力

[戻る]
Tommy 2002/03/02(土) 20:09:07
C++でテキストファイルにある文字列を整数型に変換して読み込む方法が分かりません。
バイナリ形式のファイルから読み込むことはできたのですが、テキスト形式で数字の文字
列を変換して読み込みたいのですが、値が変わってしまいます。分かる方がいましたら是
非教えてください。よろしくお願いします。

wood 2002/03/02(土) 20:29:13
strcut { char ai[3],char ad[4] } aaa;


FILE *fp;
int i_a;
double d_a;

fp=fopen("aaa.TXT","r+");

fread(aaa,sizeof(aaa),1,fp);

i_a = atoi(aaa.ai);
d_a = atof(aaa.ad);

こんな感じのことしたいんですか
はずしていたらごめんなさい

Tommy 2002/03/02(土) 20:59:41
早速の回答ありがとうございます。
やりたいことはそういうことですが、C言語の「fscanf」のようなことをC++で(fstream
クラスを使用して)できますか?読み込み時に整数型に変換して読み込むことは可能でし
ょうか?
すみませんが分かりましたら教えてください。

[E-Mail] 2002/03/08(金) 15:30:17
どうして誰も回答を出さないかというと、Tommy さんが、fstream を使って
どんなプログラムを書いているのかわからないからと思われます。

回答してから「あ、実はこういう前提条件があります」みたいな事いわれたら
回答も無駄になりますし。

# fscanf がだめなら、 sscanf 使えば良いような。

くたくた 2002/03/08(金) 16:01:01
私なら
"fstream::getline()で1行分入力、間髪入れずにsscanf()"
とやります。

YuO [E-Mail] 2002/03/08(金) 16:58:29
単純に,
std::fstream fs("foo.txt");
int n;
fs >> n;
でいいはずですが。
文字列から数字への変換は
std::istringstream iss("12");
iss >> n;
でできないことはないですが,前者の方が効率的です。
#やっていることは同じだし。

Tommy 2002/03/11(月) 18:42:21
説明不足ですみません。テキストファイルのデータはスペース単位で読み込みます。

例えばファイルに点の名前とxyzの座標値があってそれを読み込むときに下記のように書
いてみました。

ifstream fin;
char name[64];
double pnt[3];
fin >> name >> pnt[0] >> pnt[1] >> pnt[2];

このような処理で問題ないでしょうか?

YuO [E-Mail] 2002/03/11(月) 21:03:06
何か問題があったのでしょうか?
ソースコードには問題がないですが。

Tommy 2002/03/11(月) 21:55:03
[[解決]]
ファイルフォーマットが不正だった場合の処理を考えるとバイトを指定して読み込んだほ
うが良いかな?といろいろ考えてました。
とりあえずスペース単位で読み込んでコーディングしてみます。
ありがとうございました。

古いスレッドには追加発言できません。