c++ 如何将LPTSTR转换为LPCSTR?

b4wnujal  于 2023-01-03  发布在  其他
关注(0)|答案(3)|浏览(193)

所以函数GetUserName()的输出给出了一个LPTSTR的用户名,我需要把它转换成一个LPCSTR,因为我希望用户名是一个ftp目录的名称。

TCHAR id [UNLEN+1];
DWORD size = UNLEN+1;
GetUserName(id, &size); // this is an LPTSTR

FtpCreateDirectory(hFtpSession,id) // 2d parameter should be an LPCSTR

问题是我需要将LPTSTR字符串转换为LPCSTR字符串。现在我知道了:

  • LPTSTR是一个(非常数)TCHAR字符串,LPCSTR是一个常量字符串。*
    但是如何将TCHAR转换为常量字符串?

我应该注意到我没有丰富的编程/C++背景,我还应该注意到我是用多字节编译的,而不是Unicode。

afdcj2ne

afdcj2ne1#

因为你编译的是多字节,而不是unicode,所以你不需要做任何事情。LPTSTR会隐式地转换为LPCSTR,因为它只是一个char*const char*的转换。

iugsix8n

iugsix8n2#

如果你不是为Unicode编译,TCHAR = char,所以你不需要转换任何东西。另一方面,当你为Unicode编译时,你必须进行转换;有几个替代方案,看看here

vof42yt1

vof42yt13#

TCHAR id [UNLEN+1];
DWORD size = UNLEN+1;
GetUserName(&id[0], &size); // this is an LPTSTR

FtpCreateDirectory(hFtpSession,&id[0]);

此代码应在unicode或多字节版本中工作。

相关问题