LPTSTR和LPCSTR C ++

时间:2012-05-12 16:55:40

标签: c++ lpcstr lptstr

因此函数GetUserName()的输出将用户名作为LPTSTR。我需要将其转换为LPCSTR,因为我希望用户名是ftpdirectory的名称。

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。

3 个答案:

答案 0 :(得分:3)

在编译多字节而非unicode时,您无需执行任何操作。 LPTSTR会隐式转换为LPCSTR,因为它只是char*const char*次转化。

答案 1 :(得分:2)

如果您没有编译Unicode,TCHAR = char,那么您不需要转换任何内容。另一方面,在编译Unicode时,您必须执行转换;有几个替代方案,看看here

答案 2 :(得分:0)

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

FtpCreateDirectory(hFtpSession,&id[0]);

此代码应该在unicode或multibyte版本中工作。