为什么我读不出正确的string?
read:
Cstring str;
int length;
char *p ,*q;
p=new char[length];
q=p;
for(int i=0;i<length;i++)
infile.read(p++,sizeof(char));
p++='\0';str=q;
write:
outfile.write(m_Mission.GetBuffer(m_Mission.GetLengt()),m_Mission.GetLength());
为什么结果不对?给种可以实现的方法也有分
read:
Cstring str;
int length;
char *p ,*q;
p=new char[length];
q=p;
for(int i=0;i<length;i++)
infile.read(p++,sizeof(char));
p++='\0';str=q;
write:
outfile.write(m_Mission.GetBuffer(m_Mission.GetLengt()),m_Mission.GetLength());
为什么结果不对?给种可以实现的方法也有分
str=q;
m_Mission??????
没有必要用GetBuffer,直接用m_Mission就行了。
str就是后面的m_Missionwrite是我从程序中复制的,没注意对不起
char *str = "KJljsdfk;jasfkjaksdfjk;asjdfk;asjdf;
//write
if(!stream.fopen("test.log","wt")0 return;
stream.write(buffer,sizeof(char),strlen(str),stream);
//read
stream.read(buffer,sizeof(char),/*大小*/size,stream);
还有分配的内存没有删了!(new <<==>> delete )改用
CFile infile , outfile;
if( !infile.Open(...) || !outfile.Open(...) )
{
MessageBox(...);
exit(-1);
}
int nLen
char* p;
nLen = infile.GetLength();
if( nLen > 0 )
{
p = new char[nLen];
infile.Read( p , nLen );
outfile.Write( p , nLen );
delete[] p;
}
char *str = "KJljsdfk;jasfkjaksdfjk;asjdfk;asjdf;
//write
if(!stream.fopen("test.log","wt")0 return;
stream.write(buffer,sizeof(char),strlen(str),stream);
//read
stream.read(buffer,sizeof(char),/*大小*/size,stream);
还有分配的内存没有删了!(new <<==>> delete )改用
CFile infile , outfile;
int nLen
char* p;
if( !infile.Open(...) || !outfile.Open(...) )
{
MessageBox(...);
exit(-1);
}
nLen = infile.GetLength();
if( nLen > 0 )
{
p = new char[nLen];
infile.Read( p , nLen );
outfile.SeekToBegin();
outfile.Write( p , nLen );
delete[] p;
}
还有分配的内存没有删了!(new <<==>> delete )改用
CFile infile , outfile;
int nLen
char* p;
if( !infile.Open(...) || !outfile.Open(...) )
{
MessageBox(...);
exit(-1);
}
nLen = infile.GetLength();
if( nLen > 0 )
{
p = new char[nLen];
infile.Read( p , nLen );
outfile.SeekToBegin();
outfile.Write( p , nLen );
delete[] p;
}
还有分配的内存没有删了!(new <<==>> delete )改用
CFile infile , outfile;
int nLen
char* p;
if( !infile.Open(...) || !outfile.Open(...) )
{
MessageBox(...);
exit(-1);
}
nLen = infile.GetLength();
if( nLen > 0 )
{
p = new char[nLen];
infile.Read( p , nLen );
outfile.SeekToBegin();
outfile.Write( p , nLen );
delete[] p;
}
int length;
length=m_Mission.GetLength();
infile.open("Mission.txt",ios::in);
if(length>0)
{
char *p=new char[length+1],*q;
q=p;
infile.read(p,length+1);
m_Mission=q;
delete[] p;
}
存在mission.txt内容:
当前任务F:\my project\EasyPod\Debug\EasyPod.exe
为什么m_Mission为乱码?