-1

可変サイズの文字配列をファイルから stl 文字列に読み込む基本的な手法は何ですか。現在、私はそれを「悪い」方法で行っています。

  1. 書き込み中に書き込まれたカウントを読み取る
  2. そのサイズに 1 を加えた文字配列を作成する
  3. 最後の要素をゼロに設定する
  4. バッファに読み込む
  5. それを文字列に割り当てます
  6. バッファを削除

何千もの大きな文字配列を処理する私のアプリケーションでこれを行うと、遅くなります。上限が設定されていないため、大きなバッファを事前に割り当てることもできません。最初に文字列のサイズを変更してから読み取ることは、標準的ではないようです。

私たちのアプリケーションにはカスタム ファイル ライブラリがあるため、fstream や FILE などに依存できないことに注意してください。また、ブーストではなく stl を使用します。

これを解決するための最良のテクニックは何ですか?

4

2 に答える 2

2

C++11 (実際には、以前のバージョンでも同様) では、カウントを読み取り、文字列のサイズを変更してから、直接&str[0], str.size(). これにより、バッファーの動的割り当てと余分なコピーが回避されます。

于 2013-07-30T17:53:28.453 に答える