제목에있는 질문에 대답하려면 _tcscat
함수를 사용하여 두 개의 TCHAR
문자열을 연결하십시오.
그러나 여기에는 코드와 관련하여 GetUserName
에 LPTSTR
, 즉 버퍼에 대한 포인터 TCHAR
자를 사용해야합니다. 또한,이와
TCHAR* appdatapath ="C:\\Users\\"+username+"\\AppData";
문제의 또 다른 TCHAR
사용이 TCHAR
여부 _UNICODE
에 따라 변경 확장되는 타입이 정의되어있다합니다. 특히이를 설정하면 TCHAR
(결국)은 wchar
으로 확장되므로 wchar_t*
을 사용하지만 char*
을 전달하면 GetUserName
이됩니다. 또 다른 문제는 +
연산자를 사용하여 C 배열을 연결할 수 없다는 것입니다.
먼저 TCHAR
에 대해 걱정하지 말고 항상 _UNICODE
으로 컴파일하고 코드 전체에 wchar
을 사용하는 것이 좋습니다. 당신은 C++을 사용하고 때문에, 단지 std::wstring
를 사용
wchar username[UNLEN+1];
DWORD username_len = UNLEN+1;
GetUserNameW(username, &username_len);
std::wstring appdatapath = L"C:\\Users\\";
appdatapath += username;
appdatapath += L"\\AppData";
마지막으로 이상하지 : 전체 코드는 아마도 SHGetSpecialFolderPath
함수에 대한 호출로 대체 할 수있다 - 여기에 CSIDL_APPDATA
를 전달하는 "의 AppData"를 얻을 수 통로.
['std :: string' 또는'std :: wstring'] (http://en.cppreference.com/w/cpp/string/basic_string)? 또는'std :: basic_string'을 사용하여 자신의'tstring'을 만드시겠습니까? –