|
VC++MFC中CString与INT64互转
在MFC中实现CString与INT64(64位整数)的相互转换可通过以下方法实现:
CString转INT64:
使用_tcstoi64函数处理带符号转换
使用_tcstoui64函数处理无符号转换
CString strNum = _T("9223372036854775807");
INT64 num1 = _tcstoi64(strNum, NULL, 10); // 十进制转换
UINT64 num2 = _tcstoui64(_T("18446744073709551615"), NULL, 16); // 十六进制转换
INT64转CString:
使用Format方法配合%I64d/%I64u格式化符号
INT64 bigNum = 123456789012345;
CString str;
str.Format(_T("%I64d"), bigNum); // 有符号格式化
UINT64 uBigNum = 123456789012345;
str.Format(_T("%I64u"), uBigNum); // 无符号格式化
特殊进制处理:
支持2-36进制转换,通过修改_tcstoi64第三个参数实现
CString hexStr = _T("7FFFFFFFFFFFFFFF");
INT64 hexVal = _tcstoi64(hexStr, NULL, 16); // 十六进制转十进制
异常处理建议:
转换失败时_tcstoi64会返回0并设置errno
errno = 0;
INT64 val = _tcstoi64(invalidStr, NULL, 10);
if(errno == ERANGE) {
AfxMessageBox(_T("数值超出范围"));
}
注意:UNICODE环境下需确保使用宽字符版本函数,ANSI环境下会自动映射为对应窄字符函数。对于极大数值建议使用字符串比较预先验证范围。
|
|