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

用户名

我正在尝试从二进制文件中读取字符串,但似乎无法使其正常工作。我是C ++的新手。有人可以帮忙吗?谢谢。

string Name = "Shaun";
unsigned short int StringLength = 0;

int main()
{
    StringLength = Name.size();

    ofstream oFile("File.txt", ios::binary|ios::out);
    oFile.write((char*)&StringLength, sizeof(unsigned short int));
    oFile.write(Name.c_str(), StringLength);
    oFile.close();

    StringLength = 0;
    Name = "NoName";

    ifstream iFile("File.txt", ios::binary|ios::in);
    if(!iFile.is_open())
        cout << "Failed" << endl;
    else
    {
        iFile.read((char *)&StringLength, sizeof(unsigned short int));
        iFile.read((char *)&Name, StringLength);
    }

    cout << StringLength << " " << Name << endl;

    system("Pause>NUL");
    return 0;
}
萨胡

这是有问题的路线。

    iFile.read((char *)&Name, StringLength);

您正在直接将char*a部分std::string入的记忆Name

您需要保存字符串的大小以及字符串的大小,以便在读取数据时会知道读取数据需要多少内存。

代替

oFile.write(Name.c_str(), StringLength);

您将需要:

size_t len = Name.size();
oFile.write(&len, sizeof(size_t));
oFile.write(Name.c_str(), len);

在返回的途中,您将需要:

iFile.read(&len, sizeof(size_t));
char* temp = new char[len+1];
iFile.read(temp, len);
temp[len] = '\0';
Name = temp;
delete [] temp;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从二进制文件读取字符串/数组和int in c?

来自分类Dev

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

来自分类Dev

在C ++中将二进制字符串输出到二进制文件

来自分类Dev

读取二进制文件中的字符串C ++

来自分类Dev

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

来自分类Dev

C:从二进制文件读取字节

来自分类Dev

C:从二进制文件读取字节

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用c以二进制模式读取文件

来自分类Dev

使用StringStream在C ++中读取二进制文件

来自分类Dev

读取二进制文件c

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用bsearch c在字符串数组中执行二进制搜索

来自分类Dev

使用C ++解析二进制数据的长字符串

来自分类Dev

C ++-将字符串二进制链转换为int二进制链

来自分类Dev

将二进制字符串转换为ASCII字符串(C ++)

来自分类Dev

将大量二进制输入字符串转换为字符串C

来自分类Dev

Unicode字符串转换为二进制字符串,二进制字符串转换为unicode C#

来自分类Dev

Arduino C / C ++将二进制字符串转换为十进制

来自分类Dev

如何将二进制文件转储为C / C ++字符串文字?

来自分类Dev

二进制字符串转换为十六进制c ++

来自分类Dev

如何在C ++中十六进制protobuf的二进制字符串?

来自分类Dev

二进制字符串到c中的十进制数

Related 相关文章

  1. 1

    如何从二进制文件读取字符串/数组和int in c?

  2. 2

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

  3. 3

    在C ++中将二进制字符串输出到二进制文件

  4. 4

    读取二进制文件中的字符串C ++

  5. 5

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

  6. 6

    C:从二进制文件读取字节

  7. 7

    C:从二进制文件读取字节

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

    使用c以二进制模式读取文件

  15. 15

    使用StringStream在C ++中读取二进制文件

  16. 16

    读取二进制文件c

  17. 17

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

  18. 18

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

  19. 19

    使用bsearch c在字符串数组中执行二进制搜索

  20. 20

    使用C ++解析二进制数据的长字符串

  21. 21

    C ++-将字符串二进制链转换为int二进制链

  22. 22

    将二进制字符串转换为ASCII字符串(C ++)

  23. 23

    将大量二进制输入字符串转换为字符串C

  24. 24

    Unicode字符串转换为二进制字符串,二进制字符串转换为unicode C#

  25. 25

    Arduino C / C ++将二进制字符串转换为十进制

  26. 26

    如何将二进制文件转储为C / C ++字符串文字?

  27. 27

    二进制字符串转换为十六进制c ++

  28. 28

    如何在C ++中十六进制protobuf的二进制字符串?

  29. 29

    二进制字符串到c中的十进制数

热门标签

归档