为什么我读不出正确的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());
为什么结果不对?给种可以实现的方法也有分

解决方案 »

  1.   

    写的可不可以清楚一些,你想读到什么?又想输出什么呢?
    str=q;
    m_Mission??????
      

  2.   

    length没有初始值。
    没有必要用GetBuffer,直接用m_Mission就行了。
      

  3.   

    length是字符串长度
    str就是后面的m_Missionwrite是我从程序中复制的,没注意对不起
      

  4.   

    length 的问题FILE* stream;
    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);
      

  5.   

    m_Mission这个变量在什么地方,你为什么用这种方法来读呢?太低效了!
    还有分配的内存没有删了!(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;
    }
      

  6.   

    length 的问题FILE* stream;
    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);
      

  7.   

    m_Mission这个变量在什么地方,你为什么用这种方法来读呢?太低效了!
    还有分配的内存没有删了!(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;
    }
      

  8.   

    m_Mission这个变量在什么地方,你为什么用这种方法来读呢?太低效了!
    还有分配的内存没有删了!(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;
    }
      

  9.   

    m_Mission这个变量在什么地方,你为什么用这种方法来读呢?太低效了!
    还有分配的内存没有删了!(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;
    }
      

  10.   

    Cstring m_Mission
    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为乱码?