2013-08-27 80 views
-1

我想将TCHAR nameBuf[]转换为stringTCHAR []转换为字符串

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 
+3

*您可以*使用'的std :: basic_string ',但为什么不在第一个地方使用宽字符呢? – chris

+0

这里的T总是意味着宽吗? – doctorlove

+1

_T只有在_UNICODE_被定义时才会变宽。 –

回答

0

让我们把类型弄清楚。请参见下面修改后的代码:

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 
+0

那么如何让'string NAME = nameBuf'? –

+0

'nameBufSize = sizeof nameBuf - 1';应该是'nameBufSize = MAX_COMPUTERNAME_LENGTH + 1'。因为大小应该是字符而不是字节。 – john

+0

@Xynus如果你需要使用字符串而不是wstring,那么使用“A”等价物而不是“W”。 – Vivek

0

如果你想使用窄字符(好像你这样做),那么这段代码

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; 

未经测试的代码