因此函数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。
答案 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版本中工作。