首页 >后端开发 >C++ >如何在 C 中不使用 getline() 将文件字节读取到字符数组中?

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

Linda Hamilton
Linda Hamilton原创
2024-11-02 22:51:02933浏览

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

如何在 C 中将文件字节检索到字符数组

要在不使用 getline() 的情况下将文件字节读取到字符数组中,请考虑使用 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::建议使用二进制)进行准确的字节处理。
  • 虽然eekg()和tellg()通常可靠,但在某些情况下它们可能并不总是提供准确的文件大小。
  • 用于读取整个文件在一次操作和处理大文件中,使用 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>

以上是如何在 C 中不使用 getline() 将文件字节读取到字符数组中?的详细内容。更多信息请关注PHP中文网其他相关文章!

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