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
0 件のコメント:
コメントを投稿