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

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

Patricia Arquette
发布: 2024-11-02 02:16:30
原创
628 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板