C++でのファイルの読み込み

ファイルの入出力はプログラミング言語の本の比較的後ろの方に出てくるが,データを扱う場合データが読めないと始まらない。
Armadilloやmlpackを使ってみたいので,C++でテキストファイルやバイナリファイルを読んでみる。C++のストリームはバイトの列なのでいろいろな複雑なものを読み書きするのに使えるが,読みたいデータは複雑なものではなく同じ型のものが並んでいるだけだ。

テキストファイル

入力ストリーム(if stream)を開いて>>で読めるだけ読む。C++らしいところは,型をパラメタ化しているところ,動的配列std::vectorを使っているところ。
https://gist.github.com/tenomoto/75a8fabb09f010b30d65d4e9a2bcaa8f

バイナリファイル

直接アクセスの場合。ifsをバイナリモード(std::ios::binary)で開いた入力ストリームとする。数値予報モデルの名前ではない。ifs.read()を使って1文字(char)ずつデータを読む。エンディアンをひっくり返すには文字配列の後ろから読めば良い。
https://gist.github.com/tenomoto/2f4d422530397bb736525c9ce0fa5c0f

コメント

このブログの人気の投稿

静的サイト生成ツールの導入

uptex

TeXのソースを分割してTeXShopでタイプセット