Converting TCHAR to string in C++

后端 未结 5 968
-上瘾入骨i
-上瘾入骨i 2020-12-20 11:24

I\'m trying to convert a TCHAR to a string as in:

std::string mypath;
TCHAR path[MAX_PATH];
GetModuleFileName( NULL, path, MAX_PATH );

I ne

相关标签:
5条回答
  • 2020-12-20 11:32

    If you want the path in chars, you should call GetModuleFilenameA. That function takes LPSTR instead of LPTSTR.

    Note that almost all Win32 functions that take or return strings have two version, one ending in A (ANSI?) and the other ending in W (wide).

    0 讨论(0)
  • 2020-12-20 11:42

    When I really need to do it I use the following:

    TCHAR  infoBuf[32767];
    GetWindowsDirectory(infoBuf, 32767);
    

    And then I convert it to a wstring which can be converted to a standard std::string:

    wstring test(&infoBuf[0]); //convert to wstring
    string test2(test.begin(), test.end()); //and convert to string.
    
    0 讨论(0)
  • 2020-12-20 11:43

    TCHAR is a macro defined as a char or wchar depending on what you have your character set defined to. The default after 2008 is have the character set to unicode. this code works if you change your character set.

    int _tmain(int argc, _TCHAR* argv[])
    {
        TCHAR* bob ="hi";
        string s = bob;    
    }
    

    Right click on the project settings and chage the folowing

    enter image description here

    if You want to use TCHAR as a Unicode character set use wstring

    0 讨论(0)
  • 2020-12-20 11:49

    You can also convert from _TCHAR* to char* using wcstombs or wcstombs_s function

    http://msdn.microsoft.com/en-us/library/5d7tc9zw%28v=vs.80%29.aspx

    0 讨论(0)
  • 2020-12-20 11:55

    Hi this is a late answer but I have an idea.

    {wstring test = User;
     std::wcout << test << std::endl;
     string test2(test.begin(), test.end());
     std::cout << test2 << std::endl;}
    

    User is in this example the username as a TCHAR. Now I can use the name as a string or wstring. This is the easiest way to convert the TCHAR to a string.

    0 讨论(0)
提交回复
热议问题