ホームページ > バックエンド開発 > C++ > getline() を使用せずに C でファイルバイトを Char 配列に読み取る方法は?

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

Linda Hamilton
リリース: 2024-11-02 22:51:02
オリジナル
923 人が閲覧しました

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

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

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

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

    <code class="cpp">std::ifstream infile("C:\MyFile.csv");</code>
    ログイン後にコピー
  2. ファイルの長さを取得します:

    <code class="cpp">infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);</code>
    ログイン後にコピー
  3. バッファ サイズを確認します:

    <code class="cpp">if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }</code>
    ログイン後にコピー
  4. ファイルを読み取ります:

    <code class="cpp">infile.read(buffer, length);</code>
    ログイン後にコピー

追加メモ:

  • バイナリ モードでファイルを開く (例: std::ios_base:: を使用)正確なバイト処理には、バイナリ) を使用することをお勧めします。
  • seekg() と Tellg() は一般的に信頼できますが、場合によっては必ずしも正確なファイル サイズを提供するとは限りません。
  • ファイル全体を読み取る場合1 回の操作で大きなファイルを処理する場合、std::vector と std::istreambuf_iterator を使用すると、より柔軟性が高まる可能性があります。

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

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

<code class="cpp">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</code>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート