从二进制文件读取以null结尾的字符串C ++

用户名

如标题所述,我正在尝试从二进制文件中读取以null终止的字符串。

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);

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

德鲁·麦克高文(Drew McGowen)

istream::get(char &)返回对的引用istream,而不是读取的字符。您可以istream::get()像这样使用变体:

while ((ch = stream.get()) != '\0') {
    result += ch;
}

或将返回的流引用用作bool

while (stream.get(ch)) {
    if (ch != '\0') {
        result += ch;
    } else {
        break;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从二进制文件中读取以nul结尾的字符串

从C中的二进制文件读取字符串时发生访问冲突

c ++使用fstream从二进制文件读取字符串

我无法使用 C-STYLE 读取二进制文件。字符串c ++的问题

如何从C#的BinaryWriter创建的二进制文件中读取php中的字符串

将(和读取)链表(包含动态字符串)保存到 C 中的二进制文件中

将二进制字符串(ASCII)转换为二进制文件

将大二进制字符串写入二进制文件

如何以1和0的字符串序列读取二进制文件?

从相同的FileInputStream读取字符串和二进制文件

将二进制文件读取为字符串,但类型混合

在Ruby中以字符串形式读取二进制文件

将字符串作为二进制写入/读取到随机访问的文件中

将从二进制文件读取的字符串转换为整数

如何从二进制文件读取字符串?

关闭程序后如何从二进制文件中读取字符串

读取二进制字符串,用作二进制字符串python

将二进制文件读入字符串

替换二进制文件中的字符串

C ++字符串到二进制代码/二进制代码到字符串

读取二进制文件c

无法将1和0的字符串写入二进制文件,C ++

使用C ++在二进制文件中搜索字符串

如何将二进制字符串写入文件C#

使用 C# 在文件中存储字符串索引的二进制数据

如何将二进制文件的内容放在c中的字符串中?

创建以n 1结尾的二进制字符串

二进制到字符串/字符串到二进制

将任何文件转换为二进制字符串并从二进制转换为文件