还是用代码说话吧。
看看下面这这段代码,里面涉及到了CString 与string 以及char之间的转换。
void CManageDlg::ReadFromRecord() { ifstream in; in.open("./url//record.txt",ios::in); string tempbuf=""; int nIndex=0; char buf[256]; while(in.getline(buf,256)) { tempbuf=(string)buf; m_manageTitle.Format("%s",tempbuf.c_str()); int nRow=m_manageLst.InsertItem(nIndex,m_manageTitle); memset(buf,'/0',sizeof(buf)); in.getline(buf,sizeof(buf)); tempbuf=(string)buf; m_manageSite.Format("%s",tempbuf.c_str()); m_manageLst.SetItemText(nRow,1,m_manageSite); memset(buf,'/0',sizeof(buf)); m_nManageCount++; nIndex++; } in.close(); in.clear(); }
首先,从文件里面读取到的数据是char类型的buf数组,然后通过
tempbuf=(string)buf;
来实现char数组到string字符串的转换。
然后,通过
m_manageTitle.Format("%s",tempbuf.c_str());
就可以将刚才的string字符串转换为CString类型的字符串了。
再看下面这段代码
void CManageDlg::WriteURLToFile(CString &str) { ofstream out; string temp=""; out.open("./url//name.txt",ios::out); temp=str.GetBuffer(); out<<temp<<endl; str.ReleaseBuffer(); out.close(); out.clear(); }
CString类型通过下面的操作可以转换为string类型了。
temp=str.GetBuffer();
out<<temp<<endl;
str.ReleaseBuffer();
千万要记住GetBuffer之后,一定要ReleaseBuffer。
至于CString和string字符串到char数组的转换,最简单的实现方式大家也都知道,一个循环一次赋一个字符就OK了!
不过有的时候没准会遇到字符编码的问题,这个问题在下次再介绍一下!
呵呵!