项目中有个地方需要在CString中提取int
CString串有特定的格式 :int+空格+中文字符串
本来以为应该有函数可以转换的,查了下资料
确实可以用sscanf()函数。
于是把CString串转换成 char *: (char *)(LPCTSTR)CString串
再使用sscanf转换int,发现结果错误。
像1234的int,只能读入1。
百思不得其解。
后来使用CString 的Tokenize(),获得int串后,显示正确
但是再转换后又出现上述的错误了。
猜想是字符集的问题,转换的函数应该适用与ASCII的情况,这时字符占一个字节
而unicode的字符占两个字节,所以解释会错误
因此决定自己编写函数,解析int
int GetIntFromStr(char *str)
{
int tableNum;
int index=0;
char num[20];
while(isdigit(*str))
{
num[index]=*str;
index++;
str+=2;
}
num[index]='/0';
tableNum=atoi(num);
return tableNum;
}
结果证明我的猜想是正确的。