c++编程问题:string类怎么保存到二进制文件?
#include <iostream> #include <string> #include <fstream> using namespace std; 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((char * )&str1,sizeof(string)); outfile.write((char * )&str2,sizeof(string)); ose(); ifstream infile("temp.dat",ios::binary); if (! infile) { cerr << "Error ! " <<endl; return 0; } ad((char * )&str1,sizeof(string)); ad((char * )&str2,sizeof(string)); cout <<str1 <<endl; cout <<str2 <<endl; return 1; } 如果我就这样执行的话,str1和str2能保存到文件,而且能够成功读取并显示。 但如果我把“保存”的那一段代码删掉,读取就会失败,显示乱码。怎么回事?怎么解决?(不要复制一大堆东西过来,谢谢。)
outfile.write((char * )&str1,sizeof(string)); 改成 outfile.write(str1.c_str(), ze()); string不是char*的代名词...... ad((char * )&str1,sizeof(string)); 也要改 先读到char[],然后传给string
没有保存却要读出来,不产生错误还会是什么? 而且这类的操作应该通过类的序列化完成,而不是这么直接写到文件中。
答:in函数的名字写错了,你写成了mian了!应该是main2.如果上述修改未果,新建工程类型应该为win32consoleApplication详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>