”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 C++ 中不使用 getline() 将文件字节读入字符数组?

如何在 C++ 中不使用 getline() 将文件字节读入字符数组?

发布于2024-11-08
浏览:426

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

How to Retrieve File bytes into a Char Array in C

要在不使用 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)以进行准确的字节处理。
  • 虽然eekg()和tellg()通常是可靠的,但在某些情况下它们可能并不总是提供准确的文件大小。
  • 要在一次操作中读取整个文件并处理大文件,请使用std::vector std::istreambuf_iterator 可以提供更大的灵活性。

更新方法 (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