首页  >  文章  >  后端开发  >  如何在 C 中将所有文件字节读入字符数组?

如何在 C 中将所有文件字节读入字符数组?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 23:09:31840浏览

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

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

此问题旨在了解如何将文件的内容读入字符数组,绕过 getline() 的限制。

解决方案:

不要使用 getline(),考虑实现 ifstream::read() 来读取文件字节流。以下步骤概述了该过程:

  1. 打开文件:
<code class="cpp">std::ifstream infile("C:\MyFile.csv"); // consider std::ios_base::binary for binary reads</code>
  1. 确定文件长度:
<code class="cpp">infile.seekg(0, std::ios::end);
size_t length = infile.tellg();
infile.seekg(0, std::ios::beg);</code>
  1. 缓冲区溢出预防:
<code class="cpp">if (length > sizeof(buffer)) {
    length = sizeof(buffer);
}</code>
  1. 读取文件:
<code class="cpp">infile.read(buffer, length);</code>

附加说明:

  • 使用eekg()和tellg()来确定文件大小不保证准确,但通常有效。
  • 以非二进制模式打开文件可能会导致字符转换,从而影响生成的缓冲区大小。
  • 对于单次文件读取,Remy Lebeau 的答案建议使用 std::矢量和 std::istreambuf_iterator 可以提高效率。
  • 如果是缓冲读取,请考虑使用 gcount() 来跟踪实际读取的字符数。

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

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