CStdioFile file;CString s1="aasdfasdfasdfasdf";
CString s2;file.Open("111222.txt", CFile::modeWrite,NULL);
file.WriteString(s1);
file.Close();
file.Open("111222.txt", CFile::modeRead,NULL);
file.ReadString(s2);
file.Close();AfxMessageBox(s2);

解决方案 »

  1.   

    一般写字符串的方法是先写字符串的字节数,再写字符
    如:
    CString s1="abc";
    int strlength=s1.GetLength()+1; // strlength表示字符串的字节数
    CFile file.
    file.Open("yourfilename.txt",CFile::modeCreate|CFile::modeWrite,NULL);
    file.Write(&strlength,sizeof(strlength));
    file.Write(s1,strlength);
    file.Close();读它的时候就容易多了
    CString str1;
    char *pstr;
    int strlength;
    CFile file.
    file.Open("yourfilename.txt",CFile::modeRead,NULL);
    file.Read(&strlength,sizeof(strlength)); // 读了strlength,我就知道该分配多少内存
    pstr=new char[strlength];
    file.Read(pstr,strlength);
    str1=pstr;
    // OK了
      

  2.   

    纠正上面的错误
    CFile file. 改成 CFile file;
      

  3.   

    file.Write(&strlength,sizeof(strlength));file.Write(s1,strlength);     
    我有点疑问:                 先写了一个数,这个数占用了sizeof(strlength) ??
    不明白呀
      

  4.   

    CStdioFile ReadString        Reads a single line of text. 
    WriteString       Writes a single line of text. 
      

  5.   

    既然是不定长的字符串,
    那么你写入的时候要先写长度,再写内容;读的时候先读长度,在读内容。例如:
    CString s1 = "abcdefg";
    DWORD dwLength = s1.GetLength() + 1; // 包括'\0'结束符写:
    CFile file("your.file", CFile::modeCreate¦CFile::modeWrite);
    file.Write(&dwLength, sizeof(dwLength));
    file.Write((LPCTSTR)s1, dwLength);读:
    CFile file("your.file", CFile::modeRead);
    file.Read(&dwLength, sizeof(dwLength));
    char *p = new char[dwLength];
    memset (p, 0, sizeof(dwLength));
    file.Read(p, dwLength); // 读到了!
      

  6.   

    strlength是个整型变量,记录你要写的字节数.你先把它写到文件里.
    它占四个字节,所以sizeof(strlength)=4
      

  7.   

    sizeof(strlength)其实和sizeof(int)是一样的