CString 与string 以及char之间的转换

还是用代码说话吧。

看看下面这这段代码,里面涉及到了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了!

不过有的时候没准会遇到字符编码的问题,这个问题在下次再介绍一下!

呵呵!

你可能感兴趣的:(ios,String)