• ベストアンサー

ファイル入出力時の、異なる変数型の扱い

実数型、整数型、文字型が入り組んだファイルがあったとします。 例えば、 1 0.01 kok 2 . 45 . 0.254 lp 6 12.54 . このとき、このファイルを読み込んで、 第2列(縦列)のある値が実数ならvectorに格納し、 そうでないなら、何もしないというようなプログラムを 作りたいと思っています。 どのようにすればよいでしょうか。 ただし、各列(縦列)は、文字型、整数型、実数型のどれが入っているかは 分かりませんが、何バイトかは分かっているとします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rentahero
  • ベストアンサー率53% (182/342)
回答No.1

1行fgets(3)で読み込む。 strtok(3)で切り分けて2列目を(数値でも)文字列として認識 実数ということは小数点があるということだから、 小数点を探す 0個だったら、なにもしない 1個だったら、実数とみなしてatof(3)でdoubleに変換 2個以上あったら、文字列とみなしてなにもしない という処理でやればいいでしょう。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

正確な仕様がいまいち分かりにくいのですが... 指数表現はどのように扱うのでしょう?C言語と同じだとした場合、1.23e2は整数ですか?実数ですか? また、longに収まらない整数は実数扱いですか?それでも整数ですか? # vectorを使うということはC++なので、long long型はないですよね。 あと、long double型に収まらない実数はどう扱いますか? 文字列型はstd::stringに格納ということでいいですね?