Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ TCHAR[]转换为字符串_C++_C_Windows - Fatal编程技术网

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”。