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

Patricia Arquette
リリース: 2024-11-02 02:16:30
オリジナル
538 人が閲覧しました

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

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

「C:MyFile.csv」にあるファイルと次の文字配列バッファがあるとします。サイズ 10,000 の場合、ファイルからバッファにすべてのバイトを効率的に読み取るにはどうすればよいですか?

このシナリオでは getline() を使用するよりも一般的に推奨される次のアプローチを検討してください。

<code class="cpp">// Open the file in binary mode to preserve byte-by-byte fidelity
std::ifstream infile("C:\MyFile.csv", std::ios_base::binary);

// Determine the file's size
infile.seekg(0, std::ios::end);
size_t file_size = infile.tellg();
infile.seekg(0, std::ios::beg);

// Ensure that the buffer is of sufficient size
if (file_size > sizeof(buffer)) {
    // Handle the case where the file exceeds the buffer's capacity
}

// Read the entire file's contents into the buffer
infile.read(buffer, file_size);

// Obtain the actual number of bytes read from the file
std::streamsize bytes_read = infile.gcount();</code>
ログイン後にコピー

追加の注意:

  • seekg() と Tellg() を使用してファイルのサイズを決定することは、一般的に信頼できますが、保証されていないため、追加のエラー処理を検討してください。
  • ファイルが非バイナリ モードで開かれる場合、一部の文字変換が発生する可能性があり、file_size が最終的にバッファに保存されるバイト数と異なる可能性があります。
  • より大きなファイルの場合、またはサイズ変更可能なバッファを好む場合より効率的にファイルを読み取るために、std::vector および std::istreambuf_iterator の使用を検討してください。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!