这是在二进制文件中写入字符串的一段代码:
std::string s("Hello");
unsigned int N(s.size());
fwrite(&N,sizeof(N), 1 ,bfile);
fwrite(s.c_str(),1, N ,bfile);
fflush(bfile);
读取字符串的部分:
std::string new_s("");
unsigned int N(0);
fread(&N,sizeof(N),1,bfile);
char* c(new char[N+1]);
fread(c,1,N,bfile);
c[N] = '\0';
new_s = c;
delete[] c;
问题 :
- 有没有更简单的方法来做到这一点?
- 当我写/读文件时,我应该考虑
'\0'
来自的空字符c_str()
吗?
我有一个与以下相关的附带问题char* c(new char[N])
:
- 我知道 C++ 不允许使用例如 int 创建静态数组
a[size_of_array]
,因此解决方案是使用创建new[]
和删除的指针delete[]
。这是唯一的解决方案(如果我不能使用 astd::vector < int >
),这个解决方案会有效吗?