書式設定されたファイル入力 – プログラミング – Home

書式設定されたファイル入力
 
通知
すべてクリア

[解決済] 書式設定されたファイル入力


Tommy
 Tommy
(@Tommy)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

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


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

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
 Tommy
(@Tommy)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

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


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 81
 

どうして誰も回答を出さないかというと、Tommy さんが、fstream を使って
どんなプログラムを書いているのかわからないからと思われます。

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

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


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

私なら
fstream::getline()で1行分入力、間髪入れずにsscanf()
とやります。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

単純に,
std::fstream fs(foo.txt);
int n;
fs >> n;
でいいはずですが。
文字列から数字への変換は
std::istringstream iss(12);
iss >> n;
でできないことはないですが,前者の方が効率的です。
#やっていることは同じだし。


返信引用
Tommy
 Tommy
(@Tommy)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

説明不足ですみません。テキストファイルのデータはスペース単位で読み込みます。

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

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

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


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

何か問題があったのでしょうか?
ソースコードには問題がないですが。


返信引用
Tommy
 Tommy
(@Tommy)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました