C でファイルの内容を文字列に効率的に読み取る
Perl などのスクリプト言語と同様に、内容を取得できると有利ですファイル全体を抽出し、それを C の単一の変数に保存します。これによりコードが簡素化され、パフォーマンスが向上します。この投稿では、この目的を達成するための最も効率的なアプローチを検討します。
C の従来の方法は、std::ifstream 関数と std::getline() 関数を使用することです。ただし、これにはファイルを 1 行ずつ繰り返し読み取る必要があり、大きなファイルの場合は非効率的になる可能性があります。
より効率的な解決策は、std::istreambuf_iterator クラスを利用することです。このクラスは、ストリームのコンテンツに対するイテレータ インターフェイスを提供し、1 回の操作でストリーム全体を文字列に読み取ることができます。
このアプローチを示すコード例を次に示します。
<code class="cpp">#include <fstream> #include <string> int main(int argc, char** argv) { std::ifstream ifs("myfile.txt"); std::string content((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>())); return 0; }</code>
このコードでは、content 変数がファイル「myfile.txt」の内容で初期化されます。 (std::istreambuf_iterator
また、次に示すように、一時文字列変数を作成せずに content.assign メソッドを直接使用することもできます。
<code class="cpp">std::ifstream ifs("myfile.txt"); std::string content; content.assign((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));</code>
この最適化されたアプローチにより、ファイルを 1 行ずつ繰り返し読み取るオーバーヘッドが回避され、特に大きなファイルの場合に効率が大幅に向上します。
以上がC でファイル全体を効率的に文字列に読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。