- 主题:TCHAR 转 string感觉得到的长度不太对
获取计算机名 比如右键我的电脑看到的名如果是10多个字符 返回的就8个字符
#if WIN32 || _WIN32
string camoption::computername()
{
char * str;
TCHAR vTCHAR[MAX_NAME_LEN];
DWORD vDWORD = MAX_NAME_LEN;
GetComputerName(vTCHAR, &vDWORD);
wcstombs(str, vTCHAR, size_t(MAX_NAME_LEN));
string ret = str;
return ret;
}
#endif
--
FROM 123.122.158.*
TCHAR是为了兼容win 3.x、win9x搞的,现在只需要明确用WCHAR就行了。ANSI的那套早过时了。
str没分配内存,这个代码跑不了的。debug过?
--
FROM 123.115.161.*
qt里用了 vc12的cl编译通过 基础比较差 这几行代码用了整整半天调试才通过
不过返回结果就是8个字节 想返回更多就得*2这种操作
担心换个机器程序崩了 暂时调试可以用 回头发布的时候多找几个机器做测试看看结果
【 在 z16166 的大作中提到: 】
: TCHAR是为了兼容win 3.x、win9x搞的,现在只需要明确用WCHAR就行了。ANSI的那套早过时了。
: str没分配内存,这个代码跑不了的。debug过?
--
修改:scanworld FROM 123.122.158.*
FROM 123.122.158.*
感谢回复 做了一点修改
char * str;
wchar_t vTCHAR[MAX_NAME_LEN];
DWORD vDWORD = MAX_NAME_LEN;
GetComputerName(vTCHAR, &vDWORD);
str = (char *)malloc(MAX_NAME_LEN);
wcstombs(str, vTCHAR, size_t(MAX_NAME_LEN));
string ret = str;
free(str);
【 在 z16166 的大作中提到: 】
: TCHAR是为了兼容win 3.x、win9x搞的,现在只需要明确用WCHAR就行了。ANSI的那套早过时了。
: str没分配内存,这个代码跑不了的。debug过?
--
FROM 124.64.247.*