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);
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);
如:
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了
CFile file. 改成 CFile file;
我有点疑问: 先写了一个数,这个数占用了sizeof(strlength) ??
不明白呀
WriteString Writes a single line of text.
那么你写入的时候要先写长度,再写内容;读的时候先读长度,在读内容。例如:
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); // 读到了!
它占四个字节,所以sizeof(strlength)=4