VC++6.0 Unicode 模式下编程:
对于同样的字符串,却显示不同的长度,原因就在于读取文件时是按照 ASC 方式读取的, 长度当然为8
,而直接设定字符串时,是按照Unicode 方式读取的,长度为4。
若使得读取文件时按照 Unicode 方式读取,则需要添加:
setlocale( LC_CTYPE, "chs" ); 其对应的头文件为 <locale>
void
CEg1Dlg::OnOK()
{
CStdioFile file(_T("dic1.txt"),CFile::modeRead);
CString line;
// 读取文件,文件内容为 "汽车服务"
file.ReadString(line);
int len=line.GetLength();
CString strLen;
strLen.Format(_T("%d"),len);
MessageBox(strLen);// 显示为 8
line=_T("汽车服务");
len=line.GetLength();
strLen.Format(_T("%d"),len);
MessageBox(strLen); // 显示为 4
}
{
CStdioFile file(_T("dic1.txt"),CFile::modeRead);
CString line;
// 读取文件,文件内容为 "汽车服务"
file.ReadString(line);
int len=line.GetLength();
CString strLen;
strLen.Format(_T("%d"),len);
MessageBox(strLen);// 显示为 8
line=_T("汽车服务");
len=line.GetLength();
strLen.Format(_T("%d"),len);
MessageBox(strLen); // 显示为 4
}
对于同样的字符串,却显示不同的长度,原因就在于读取文件时是按照 ASC 方式读取的, 长度当然为8
,而直接设定字符串时,是按照Unicode 方式读取的,长度为4。
若使得读取文件时按照 Unicode 方式读取,则需要添加:
setlocale( LC_CTYPE, "chs" ); 其对应的头文件为 <locale>