c++文件write函数问题
c++中如何把一个结构体写入文件,以及如何从文件中读出结构体呢?写了个程序不知道为什么编译错误,如下:#include<iostream>#include<fstream...
c++中如何把一个结构体写入文件,以及如何从文件中读出结构体呢?写了个程序不知道为什么编译错误,如下:
#include<iostream>
#include<fstream>
using namespace std;
struct a
{
int data;
char name;
struct a* aptr;
};
typedef struct a A;
int main()
{
A a;
a.data=1;
a.name=2;
a.aptr=NULL;
A* b=&a;
ofstream out;
out.open("a.txt",ios::out|ios::binary);
out.write(b,sizeof(A));
out.close();
//in.open("a.txt",ios::in|ios::binary);
return 0;
} 展开
#include<iostream>
#include<fstream>
using namespace std;
struct a
{
int data;
char name;
struct a* aptr;
};
typedef struct a A;
int main()
{
A a;
a.data=1;
a.name=2;
a.aptr=NULL;
A* b=&a;
ofstream out;
out.open("a.txt",ios::out|ios::binary);
out.write(b,sizeof(A));
out.close();
//in.open("a.txt",ios::in|ios::binary);
return 0;
} 展开
5个回答
展开全部
c++中write是用于向文件中写数据的函数。
函数原型:ostream& write (const char* s, streamsize n);
参数:s是数据源指针,n表示字节数
返回值:返回 ostream 对象的引用 (*this).
注意:使用需要#include <fstream>
实例:
#include <fstream> // std::ifstream, std::ofstr
// Copy a file
#include <fstream> // std::ifstream, std::ofstream
int main () {
std::ifstream infile ("test.txt",std::ifstream::binary);
std::ofstream outfile ("new.txt",std::ofstream::binary);
// get size of file
infile.seekg (0,infile.end);
long size = infile.tellg();
infile.seekg (0);
// allocate memory for file content
char* buffer = new char[size];
// read content of infile
infile.read (buffer,size);
// write to outfile
outfile.write (buffer,size);
// release dynamically-allocated memory
delete[] buffer;
outfile.close();
infile.close();
return 0;
}
函数原型:ostream& write (const char* s, streamsize n);
参数:s是数据源指针,n表示字节数
返回值:返回 ostream 对象的引用 (*this).
注意:使用需要#include <fstream>
实例:
#include <fstream> // std::ifstream, std::ofstr
// Copy a file
#include <fstream> // std::ifstream, std::ofstream
int main () {
std::ifstream infile ("test.txt",std::ifstream::binary);
std::ofstream outfile ("new.txt",std::ofstream::binary);
// get size of file
infile.seekg (0,infile.end);
long size = infile.tellg();
infile.seekg (0);
// allocate memory for file content
char* buffer = new char[size];
// read content of infile
infile.read (buffer,size);
// write to outfile
outfile.write (buffer,size);
// release dynamically-allocated memory
delete[] buffer;
outfile.close();
infile.close();
return 0;
}
展开全部
编译提示信息应该告诉你了啊,write的第一个参数必须是const char *型的,你要强制转换一下
out.write((const char *)b,sizeof(A));
不过,结构中的指针成员写入文件是没有含义的,因为指针的值是数据在此次运行时内存中的偏移,下次再从文件中读出来这个地址值就无效了.
out.write((const char *)b,sizeof(A));
不过,结构中的指针成员写入文件是没有含义的,因为指针的值是数据在此次运行时内存中的偏移,下次再从文件中读出来这个地址值就无效了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include<fstream>
using namespace std;
struct a
{
int data;
char name;
struct a* aptr;
};
typedef struct a A;
int main()
{
A a;
a.data=1;
a.name=2;
a.aptr=NULL;
A* b=&a;
ofstream out;
out.open("a.txt",ios::out|ios::binary);
out.write((char*)b,sizeof(A));
out.close();
//in.open("a.txt",ios::in|ios::binary);
return 0;
}
上边这个程序编译没有错误了。
ostream& write ( const char* s , streamsize n );
这个是write的原型 第一个参数必须是指向char型的指针,第二个是大小
你传的是指向结构体的指针 所以不对
#include<fstream>
using namespace std;
struct a
{
int data;
char name;
struct a* aptr;
};
typedef struct a A;
int main()
{
A a;
a.data=1;
a.name=2;
a.aptr=NULL;
A* b=&a;
ofstream out;
out.open("a.txt",ios::out|ios::binary);
out.write((char*)b,sizeof(A));
out.close();
//in.open("a.txt",ios::in|ios::binary);
return 0;
}
上边这个程序编译没有错误了。
ostream& write ( const char* s , streamsize n );
这个是write的原型 第一个参数必须是指向char型的指针,第二个是大小
你传的是指向结构体的指针 所以不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
out.write((char *)b,sizeof(A));
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你结构里面还有指针,不能直接write,要一部份部份write
不然只写了一个指针的地址
不然只写了一个指针的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询