在C ++中将TCHAR转换为字符串

| 我正在尝试将TCHAR转换为字符串,如下所示:
std::string mypath;
TCHAR path[MAX_PATH];
GetModuleFileName( NULL, path, MAX_PATH );
我需要将
mypath
设置为
path
。我做了一个简单的循环,将
path[index]
连接到
mypath
,这可行,但是我不喜欢这种方式。 我是C ++的新手,但是已经做了大量的C#。我已经看到了传递“ \ char \”的ѭ5的示例,但它不喜欢它。它需要
TCHAR
LPWSTR
。     
已邀请:
TCHAR是定义为char或wchar的宏,具体取决于您定义的字符集。 2008年之后的默认值是将字符设置为unicode。如果您更改字符集,则此代码有效。
int _tmain(int argc, _TCHAR* argv[])
{
    TCHAR* bob =\"hi\";
    string s = bob;    
}
右键单击项目设置并更改以下内容 如果要使用TCHAR作为Unicode字符集,请使用wstring     
当我真的需要这样做时,请使用以下命令:
TCHAR  infoBuf[32767]
GetWindowsDirectory(infoBuf, 32767); 
//Let\'s convert to string...
wstring test(&infoBuf[0]); //convert to wstring
string test2(test.begin(), test.end()); //and convert to string.
希望能有所帮助。     
如果您想使用char表示路径,则应致电
GetModuleFilenameA
。该函数用
LPSTR
代替
LPTSTR
。 请注意,几乎所有采用或返回字符串的Win32函数都有两个版本,一个以
A
(ANSI?)结尾,另一个以
W
(wide)结尾。     
您还可以使用
wcstombs
wcstombs_s
函数将
_TCHAR*
转换为
char*
http://msdn.microsoft.com/zh-cn/library/5d7tc9zw%28v=vs.80%29.aspx     

要回复问题请先登录注册