21xrx.com
2025-04-01 17:40:37 Tuesday
文章检索 我的文章 写文章
使用C++将String类型数据保存为二进制文件
2023-07-05 10:18:51 深夜i     22     0
C++ String 二进制文件 保存 数据

在C++中,我们经常需要使用String类型数据,如何将这些数据以二进制的形式进行保存呢?下面给出一种方法,供大家参考。

首先,我们需要包含头文件 ,然后打开一个输出文件流,并以二进制写入的模式打开文件。

接下来,我们由于String类型并不是一种基本的数据类型,所以需要将其转换成字符数组,在保存之前将字符数组的长度写入文件中,这样在读取的时候可以先读取长度,然后再根据长度读取字符数组,最后将字符数组转换为String类型即可。

具体的代码如下所示:

#include <fstream>
#include <string>
int main()
{
  std::ofstream output("data.bin", std::ios::out | std::ios::binary);
  if (!output)
  
    // error handling
  
  std::string str = "Hello, world!";
  int length = str.length();
  // 写入字符数组的长度
  output.write(reinterpret_cast<const char*>(&length), sizeof(length));
  // 将字符串转换成字符数组
  const char* charArray = str.c_str();
  // 写入字符数组
  output.write(charArray, length * sizeof(char));
  output.close();
  return 0;
}

可以运行上面的代码,将字符串"Hello, world!"保存为data.bin文件,在读取时可以根据保存的方式进行读取,具体的代码如下所示:

std::ifstream input("data.bin", std::ios::in | std::ios::binary);
if (!input)
  // error handling
int length;
// 读取字符数组的长度
input.read(reinterpret_cast<char*>(&length), sizeof(length));
// 分配空间存储字符数组
char* charArray = new char[length + 1];
// 读取字符数组
input.read(charArray, length * sizeof(char));
charArray[length] = '\0';
// 将字符数组转换成字符串
std::string str(charArray);
delete[] charArray;
input.close();

以上便是一种将String类型数据保存为二进制文件的方法,可以根据自己的需求进行使用和改进。

  
  

评论区

请求出错了