有个数据分析采集的小项目偶尔出现异常退出,使用dump发现定位在CStringT MakeLower函数,发现问题记录下
#include "stdafx.h"
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
std::string tmp = ":U鬱躺衻撅伙";
CString str = tmp.substr(0,tmp.size() - 1).c_str();
str.Trim();
str.MakeLower();
return 0;
}
上述代码中在多字节集遇到unicode字符MakeLower会异常。解决方法就是使用 CharLower 函数
str = CharLower((LPSTR)str.GetString());