程序采用的是unicode字符集。很多只要设计到CString的都要加_T,后来因为程序需要,要在硬盘上创建txt文档并写入输入的字符。结果发现长度一直不对。让自己很头疼。最后终于解决,虽然
不是很符合国际规范(其实也不知道怎么才能符合,希望哪位大牛能够给予纠正指点),但最终解决了。特此记下。
CString str;
GetDlgItemText(IDC_EDIT1,str);
try
{
CStdioFile out;
out.Open(_T("c:\\subtitle.txt"), CFile::modeCreate | CFile::modeWrite);
CString time = _T("00:00:00,000 --> 00:00:02,000\n");
char ch[200];
DWORD dwNum = WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,time,-1,ch,sizeof(ch),NULL,NULL);
out.Write(ch,dwNum);
out.Seek(-1,CFile::current);
dwNum = WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,str,-1,ch,sizeof(ch),NULL,NULL);
out.Write(ch,dwNum);
out.Close();
}
catch (CFileException* e)
{
e->ReportError();
e->Delete();
}