c++ - 从二进制文件中读取空终止字符串 C++

标签 c++ fstream

正如标题所说,我正在尝试从二进制文件中读取以空字符结尾的字符串。

std::string ObjElement::ReadStringFromStream(std::ifstream &stream) {
    std::string result = "";
    char ch;
    while (stream.get(ch) != '\0') {
        result += ch;
    }
    return result; }

我的空字符是'\0'

但是任何时候我调用它读取到文件末尾的方法

std::ifstream myFile(file, std::ios_base::in | std::ios_base::binary);
myFile.seekg(startByte);

this->name = ObjElement::ReadStringFromStream(myFile);

知道我在这里做错了什么吗?

最佳答案

使用std::getline:

#include <string> // for std::getline

std::string ObjElement::ReadStringFromStream(std::ifstream &stream) {
    std::string s;
    std::getline(stream, s, '\0');
    return s;
}

关于c++ - 从二进制文件中读取空终止字符串 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25206337/

相关文章:

c++ - 我的fstream不好还是不好()?

c++ - 在 C++ 中比较 double 和字符

c# - 如何将结构从非托管 C++ 程序传递到 C# 程序?

c++ - 在测试中,有没有办法防御来自未定义行为的 "correct"结果?

c++ - 无法读取 C++ 中的 .list 扩展文件

c++ - 如何使用 std::getline() 将文本文件读入 C++ 中的字符串数组?

c++ - 在某些情况下,编写自己的复制构造函数而不是自己的赋值运算符是个好主意吗?

c++ - 在这种情况下,我如何在选择时强制进行 C++ 宏替换?

c++ - 为什么这些文件打不开?

数字的 C++ 精度和 fstream 的截断