「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > getline() を使用せずに C++ でファイルバイトを Char 配列に読み取る方法は?

getline() を使用せずに C++ でファイルバイトを Char 配列に読み取る方法は?

2024 年 11 月 8 日に公開
ブラウズ:408

How to Read File Bytes into a Char Array in C   Without getline()?

C でファイルのバイトを Char 配列に取得する方法

getline() を使用せずにファイルのバイトを char 配列に読み取るには、次のことを考慮してください。 ifstream::read() を使用します。次の手順に従ってください:

  1. ファイルを開きます:

    std::ifstream infile("C:\\MyFile.csv");
  2. ファイル長の取得:

    infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);
  3. バッファ サイズを確保:

    if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }
  4. ファイルを読み取ります:

    infile.read(buffer, length);

追加の注意:

  • 正確なバイト処理のために、バイナリ モード (std::ios_base::binary など) でファイルを開くことをお勧めします。
  • seekg() と Tellg() は一般に信頼できますが、場合によっては常に正確なファイル サイズが提供されるとは限りません。
  • 1 回の操作でファイル全体を読み取り、大きなファイルを処理するには、std::vector を使用します。

更新されたアプローチ (2019):

読み取り中の潜在的なエラーを考慮するには、次のアプローチを検討してください。

size_t chars_read;

if (!(infile.read(buffer, sizeof(buffer)))) {
    if (!infile.eof()) {
        // Handle error during reading
    }
}

chars_read = infile.gcount(); // Get actual number of bytes read
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3