C++ TCHAR[]转换为字符串
我想将C++ TCHAR[]转换为字符串,c++,c,windows,C++,C,Windows,我想将TCHAR nameBuf[]转换为字符串 TCHAR nameBuf[MAX_COMPUTERNAME_LENGTH + 2]; DWORD nameBufSize; nameBufSize = sizeof nameBuf - 1; GetComputerName(nameBuf, &nameBufSize); //store computer name into nameBuf _tprintf(_T("%s"), nameBuf); //print the comp
TCHAR nameBuf[]
转换为字符串
TCHAR nameBuf[MAX_COMPUTERNAME_LENGTH + 2];
DWORD nameBufSize;
nameBufSize = sizeof nameBuf - 1;
GetComputerName(nameBuf, &nameBufSize); //store computer name into nameBuf
_tprintf(_T("%s"), nameBuf); //print the computer name
让我们把字体弄清楚。请参见下面的修改代码:
WCHAR nameBuf[MAX_COMPUTERNAME_LENGTH + 2];
DWORD nameBufSize;
nameBufSize = sizeof nameBuf - 1;
GetComputerNameW(nameBuf, &nameBufSize); //store computer name into nameBuf
wprintf_s(L"%s", nameBuf); //print the computer name
如果您想使用窄字符(看起来是这样),那么下面的代码
char nameBuf[MAX_COMPUTERNAME_LENGTH + 2];
DWORD nameBufSize;
nameBufSize = sizeof nameBuf - 1;
GetComputerNameA(nameBuf, &nameBufSize); //store computer name into nameBuf
printf_s("%s", nameBuf); //print the computer name
string NAME = nameBuf;
未经测试的代码您可以使用
std::basic_string
,但为什么不首先使用宽字符呢?这里的T是否总是表示宽?只有在定义了_UNICODE时,T才是宽的。为什么要使用TCHAR
?你真的还支持Windows 98吗?@XynusChan我在互联网上找到了这段代码。这就是你的问题所在。不要盲目复制,你应该寻求理解。然后如何使string NAME=nameBuf
?nameBufSize=sizeof nameBuf-1
;应为nameBufSize=MAX\u COMPUTERNAME\u LENGTH+1
。因为大小应以字符而不是字节为单位。@Xynus如果需要使用字符串而不是wstring,请使用“A”等效项而不是“W”。