CStdioFile 读取unicade环境下乱码处理

void CWVKeyAutoWRDlg::LoadSnKeyMap(void)
{

	CFile mFile;
	CString strL=_T("");
	CString strFile = _T("WVKey_sn_map_record.txt");
	CString strSnTemp, strKeyTemp;
	if (mFile.Open(strFile, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite))
	{

		    while(UNReadString(&mFile, strL))
			{
				AfxExtractSubString(strSnTemp, strL, 0, '\t');
				AfxExtractSubString(strKeyTemp, strL, 1, '\t');
				myMap.SetAt(strSnTemp, strKeyTemp);
			}			
	}
}

BOOL CWVKeyAutoWRDlg::UNReadString(CFile *InputFile, CString &strReturn)
{
	TCHAR tc;
	CString strBuff = _T("");
	strReturn = _T("");

	while(InputFile->Read(&tc, sizeof(TCHAR)))
	{
		strBuff = tc;

		if(_T("\n") != strBuff)
		{
			strReturn += strBuff;
		}
		else
		{
			return TRUE;
		}
	}

	return FALSE;
}


内部函数AfxExtractSubString很好用:

从读出的一行字符串strL中查找第一个标示符的分割出的字符串strSnTemp

AfxExtractSubString(strSnTemp, strL, 0, '\t');

从读出的一行字符串strL中查找第二个标示符的分割出的字符串strKeyTemp

AfxExtractSubString(strKeyTemp, strL, 1, '\t');



另外的参照链接:

http://bbs.csdn.net/topics/380136094


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值