我有个类,里面有个变量是用来记录一段文字,用了CString类型。
我用CFILE.WRITE来保存,然后READ出来后,这段文字就读不出来。
我估计是CString只是一个指针,没将实际内容保存进去。
请高手想个方法解决,谢谢!!

解决方案 »

  1.   

    virtual void Write( const void* lpBuf, UINT nCount );
    //example for CFile::Write
    extern CFile cfile;
    char pbuf[100];
    cfile.Write( pbuf, 100 );
      

  2.   

    这个问题很简单
    CString里面不是有一个GetBuffer()函数嘛,是得到该字符串的缓冲区指针的
    你用这个方法就可以实现了CString str;
    CFile file;
    file.Open("c:\\1.txt",CFile::modeRead);
    file.Read(str.GetBuffer(str.GetLength()),512);
    file.Close();
      

  3.   

    对了,你要做的是Write,就将我写的file.Read改成file.Write就全OK了
      

  4.   

    class A
    {
    public:
    int a;
             int b;
    CString text;
    };
    保存的代码
    CFile file;
    file.Write(aaa,sizeof(A));//aaa是A的对象,已经初始化了无论我text里存什么文本,sizeof都一样大小,所以我认为估计是存了指针而已,没把实际内容存进去。
    请高手指点
      

  5.   

    CString strData;
    CFile.Write(strData.GetBuffer(strData.GetLength()),strData.GetLength());
      

  6.   

    sizeof(A);//当然不行了,因为类型只占用了一个声明的地址,你给成员赋值并不往类里写而是往实例化的对象里边写内容sizeof(aaa);不行吗?
      

  7.   

    sizeof(aaa)也不行,还sizeof(a)一样。
    前面夏乾坤说的可以读到原来保存的内容,但保存进类的CString变量,又出现问题。
    CFile file;
    CString str;
    file.read(str.getbuffer(str.getlength()),512);
    A *aaa= new A();
    file.read(aaa,sizeof(A));//直接这样text是保存不进去的
    aaa.text = str;//这里好象一直有问题
    各位 看看有什么好的建议,谢谢
      

  8.   

    class A
    {
    public:
    int a;
             int b;
    CString text;
    };
    //保存的代码
    CFile file;
    file.Write(&(aaa.a),sizeof(int));
    file.Write(&(aaa.b),sizeof(int));
    int nLen = aaa.text.GetLength();
    file.Write(&nLen,sizeof(int));
    file.Write(aaa.text.GetBuffer(0),aaa.text.GetLength());
    file.Close();
    //读取的代码
    CFile file;
    AAA aaa;
    file.Read(&(aaa.a),sizeof(int));
    file.Read(&(aaa.b),sizeof(int));
    int nLen = 0;
    file.Read(&nLen,sizeof(int));
    char *pBuf = new char[nLen+1];
    memset(pBuf,0,nLen+1);
    file.Read(pBuf,nLen);
    aaa.text.Format("%s",pBuf);
      

  9.   

    //以下代码仅供参考
    #deinf MAX_LENGTH 256
    struct MyData{
      int a;
      int b;
      char text[MAX_LENGTH];
    }
    //设置
    MyData myData;
    memset(&myData,0,sizeof(MyData));
    myData.a = 2005;
    myData.b = 317;
    CString szText("Text");
    strcpy(myData.text,szText.GetBuffer(0));
    //保存
    CFile file;
    file.Open(...);
    file.Write(&myData,sizeof(myData));
    file.Close();
    //读取
    MyData myData;
    CFile file;
    file.Open(...);
    file.Read(&myData,sizeof(myData));
    file.Close();
      

  10.   

    用mfc中的Cstring
    为何就不用mfc中的序列化呢(Serialize)
      

  11.   

    sizeof(A)=????
    CString类型的对象的长度随着输入的字符变化而变化,况且其长度也不一定就等于输入的字符长。
    象int,float是可以用sizeof的,因为int a;a就占4个字节;CFile file;
    file.write(aaa.a,sizeof(int));
    file.write(aaa.b,sizeof(int));
    file.write(aaa.text,aaa.text.GetLength());
      

  12.   

    CString m_strPathIndex,st;
    st = "123";
    m_strPathIndex = "E:\\Crystal521\\1.txt";
    CStdioFile file(m_strPathIndex,CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate);
    //file.SeekToBegin();
    file.Write(st,st.GetLength());
    file.Flush();
    file.Close();