ホームページ  >  記事  >  バックエンド開発  >  C ですべてのファイルバイトを文字配列に読み取る方法

C ですべてのファイルバイトを文字配列に読み取る方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 23:09:31840ブラウズ

How to Read All File Bytes into a Character Array in C  ?

C ですべてのファイル バイトを文字配列に取得する

この質問は、ファイルの内容を文字に読み取る方法を理解することを目的としています。 getline() の制限をバイパスする配列。

解決策:

getline() を使用する代わりに、ファイルを読み取るために ifstream::read() を実装することを検討してください。バイトのストリーム。次の手順はプロセスの概要です:

  1. ファイルを開く:
<code class="cpp">std::ifstream infile("C:\MyFile.csv"); // consider std::ios_base::binary for binary reads</code>
  1. ファイルの長さの決定:
<code class="cpp">infile.seekg(0, std::ios::end);
size_t length = infile.tellg();
infile.seekg(0, std::ios::beg);</code>
  1. バッファオーバーフロー防止:
<code class="cpp">if (length > sizeof(buffer)) {
    length = sizeof(buffer);
}</code>
  1. ファイルの読み取り:
<code class="cpp">infile.read(buffer, length);</code>

追加メモ:

  • seekg() と Tellg() を使用してファイル サイズを決定することは正確であるとは限りませんが、通常は機能します。
  • 非バイナリ モードでファイルを開くと、結果のバッファ サイズに影響を与える文字変換が発生する可能性があります。
  • シングルショットのファイル読み取りの場合、Remy Lebeau の回答では std:: の使用を推奨しています。効率を向上させるために、vector と std::istreambuf_iterator を使用します。
  • バッファ読み取りの場合は、実際に読み取られた文字数を追跡するために gcount() を使用することを検討してください。

以上がC ですべてのファイルバイトを文字配列に読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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