c/c++中如何采用二进制文件存储数据?
答案:3 悬赏:10
解决时间 2021-02-19 02:37
- 提问者网友:✐ۖ﹏ℳ๓北风
- 2021-02-18 11:19
c/c++中如何采用二进制文件存储数据?
最佳答案
- 二级知识专家网友:短发女王川岛琦
- 2021-02-18 12:22
应该这样保存:
int main()
{
string str1;
string str2;
cin >> str1;
cin >> str2;
ofstream outfile("temp.dat",ios::binary);
if(! outfile)
{
cerr << "Error ! " <<endl;
return 0;
}
outfile.write(str1.c_str(),str1.size()+1);
outfile.write(str2.c_str(),str2.size()+1);
outfile.close();
return 1;
}
读取的时候这样读取:
int main()
{
string str1;
str1.reserve(100);
ifstream infile("temp.dat",ios::binary);
if (! infile)
{
cerr << "Error ! " <<endl;
return 0;
}
infile.read((char * )str1.c_str(),100);
cout <<str1 <<endl; //输出第一个字符串
cout << (char*)(str1.c_str() + strlen(str1.c_str())+1) << endl;//输出第二个字符串
return 1;
}
int main()
{
string str1;
string str2;
cin >> str1;
cin >> str2;
ofstream outfile("temp.dat",ios::binary);
if(! outfile)
{
cerr << "Error ! " <<endl;
return 0;
}
outfile.write(str1.c_str(),str1.size()+1);
outfile.write(str2.c_str(),str2.size()+1);
outfile.close();
return 1;
}
读取的时候这样读取:
int main()
{
string str1;
str1.reserve(100);
ifstream infile("temp.dat",ios::binary);
if (! infile)
{
cerr << "Error ! " <<endl;
return 0;
}
infile.read((char * )str1.c_str(),100);
cout <<str1 <<endl; //输出第一个字符串
cout << (char*)(str1.c_str() + strlen(str1.c_str())+1) << endl;//输出第二个字符串
return 1;
}
全部回答
- 1楼网友:我颠覆世界
- 2021-02-18 14:08
保存一个整数int a=12345;到文件
可以是文本方式,可以是二进制方式。
文本方式就是保存的文件内容是一个字符串12345,记事本可以直接打开,显示12345
fprintf(fp, "%d", a);
二进制方式就是把直接把12345这个数在内存的内容(0x00003039)直接放在文件中,你用记事本打开是乱码,一般用16进制编辑器打开
fwrite(&a, sizeof(a), 1, fp);
一般都是直接把一个结构保存到文件
比如
struct stu
{
char name
- 2楼网友:duile
- 2021-02-18 12:43
#include
#include
int main()
{
file* fp = fopen("abc.txt", "r");
if (fp == null)
{
return -1;
}
char sbuf[256] = {0};
int iarr[1024]; // 假设最多1024个
int i = 0;
while ((fgets(sbuf) != null) && i < 1024)
{
iarr[i++] = atoi(sbuf);
}
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯