ホームページ  >  記事  >  バックエンド開発  >  C でファイルの内容全体を文字列に効率的に読み取るにはどうすればよいですか?

C でファイルの内容全体を文字列に効率的に読み取るにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-27 06:45:29695ブラウズ

How can I efficiently read the entire contents of a file into a string in C  ?

C でファイルの内容を文字列に効率的に読み取る

C では、Perl などのスクリプト言語とは異なり、ファイルの内容全体を読み取ります。 1 回の操作で文字列に変換することは直接利用できません。ただし、この機能を実現する効率的な方法があります。

ファイルの内容を文字列に読み取るには、 C のファイル入力処理機能を利用できます。効率的な解決策は次のとおりです。

<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>

このコードは、入力ファイル ストリームを使用して「myfile.txt」という名前のファイルの内容を読み取り、「content」という名前の文字列変数に格納します。ファイルの内容を文字列に割り当てるために使用される式は次のとおりです。

<code class="cpp">std::string content( (std::istreambuf_iterator<char>(ifs) ),
                   (std::istreambuf_iterator<char>()    ) );</code>

この式は反復子を利用して入力ファイル ストリームから 1 文字ずつ読み取り、文字列を構築します。最初の反復子は入力ファイル ストリームで初期化され、2 番目の反復子はデフォルトで構築された「終了」反復子で、ファイルの終わりを示します。

または、次のコードを使用して、次のコードを使用して、次の値を上書きすることもできます。既存の文字列変数:

<code class="cpp">std::string content;
content.assign( (std::istreambuf_iterator<char>(ifs) ),
                (std::istreambuf_iterator<char>()    ) );</code>

このコードは、既存の文字列変数「content」の値をファイルの内容で上書きします。

以上がC でファイルの内容全体を文字列に効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。