首页  >  文章  >  后端开发  >  如何在 C 语言中高效地将文件中的所有字节读取到字符数组中?

如何在 C 语言中高效地将文件中的所有字节读取到字符数组中?

Patricia Arquette
Patricia Arquette原创
2024-11-02 02:16:30539浏览

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

如何将文件中的所有字节检索到 C 语言的字符数组中

给定一个位于“C:MyFile.csv”的文件和一个字符数组缓冲区size 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>

附加说明:

  • 使用eekg()和tellg()来确定文件的大小通常是可靠的,但不能保证,所以请考虑额外的错误处理。
  • 如果文件以非二进制模式打开,可能会发生一些字符转换,可能导致 file_size 与最终存储在缓冲区中的字节数不同。
  • 对于较大的文件或您喜欢调整大小的缓冲区的情况,考虑使用 std::vector 和 std::istreambuf_iterator 来更高效地读取文件。

以上是如何在 C 语言中高效地将文件中的所有字节读取到字符数组中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn