puddingプログラミングの記事がメインのブログです。パターン別まとめC++スポンサードリンク2020-07-30C++でのファイルの読み込み方法のまとめです。使われるCでもできる方法以外の標準C++ライブラリを使ったファイル読込み方法です。2013とg++で確認しました4パターン用意しました。string型に全部読込むテスト用ファイル(test.txt)12345689※このファイルは1行目は改行ありで、2行目は改行なしです(ただし、Vimなどのエディタでは改行なしの最終行を作ることはできないことに注意)。追記2のパターンでは下記リンクのようにもかけます。null文字を考慮して読込み先の配列のサイズは+1にしました。seekgで巻き戻す前にclear()を追加しました。これがないとコケることがあるらしいです。n);という定義です。0※環境によって実行結果が異なることもあるかもしれません。n);はstringに対応していないのです。ファイル一気読みしてstringに入れられないの?と思いましたが、方法はあります。0;}こちらでも同じです。ほとんどさっきと同じですが、こうもかけます。<cstdlib>を書かないとEXIT_FAULUREマクロも使えないんですね。この方法で使っているstreambuf_iteratorがどんなものか知りたい場合は下記を参照してみてください。上記で紹介した以外にも標準Cランタイムライブラリを使う方法もあります。fgets()ですね。事実上現在これが読込みが最速なのですが......。ファイル読み出しコードの性能評価その他ここでのサンプルはRAIIという技法を使っています。明示的にファイルのクローズは必要ありません。デストラクタでクローズします。Initialization、日本語では「リソースの確保は初期化時に」、「リソースの取得と初期化」など)は、資源(リソース)の確保と解放を変数の初期化と破棄処理に結び付けるというプログラミングのテクニックで、特にC++とDで一般的である。RAIIでは資源の取得を変数の構築(初期化)時、返却を破壊時に行う。自動変数がスコープを離れるときデストラクタが呼ばれるため、変数の寿命が終わるとすぐに資源が返却されることが保障できるようになった。http://ja.wikipedia.org/wiki/RAIIテキストモードとバイナリモードについて今回はテキストモードのみ使用しています。ifstreamのコンストラクタの第2引数にstd::ios::binaryを指定してあげるとバイナリモードになります。ちなみにstd::ios_base::binaryとかほかにもいろいろあるんだけど、どれを使うのが標準的なのか僕は知りません。std::iosが無難なのかな?テキストモードとバイナリモードの違いですが、まぁ、グーグル先生が割と的確な答えをいってくれるのですが、一言でいうと、改行の扱いを環境(≒OS)によってうまいことやってくれるってやつです。Windowsだと改行はCR+LFで、Linux系(今のMac含む)はLFで違いますよね。余計なことすんな!なときはstd::ios::binaryを指定してあげましょう。とりあえ...2015-02-26クラスのメンバ変数の引数付きのコンストラクタの呼び出し方のメモあんまり使わないのでどうやってやるんだっけなメモ。はてなブログPro睡眠プログラマーです。1引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。