"const TCHAR"에 대한 유형이 지정된 포인터를 반환하는 클래스가 있습니다. std :: string으로 변환해야하지만이 방법을 찾지 못했습니다."const TCHAR에 대한 포인터"를 "std :: string"으로 어떻게 변환합니까?
누구든지 변환 방법에 대한 통찰력을 제공 할 수 있습니까? 당신의 컴파일 설정에 따라
"const TCHAR"에 대한 유형이 지정된 포인터를 반환하는 클래스가 있습니다. std :: string으로 변환해야하지만이 방법을 찾지 못했습니다."const TCHAR에 대한 포인터"를 "std :: string"으로 어떻게 변환합니까?
누구든지 변환 방법에 대한 통찰력을 제공 할 수 있습니까? 당신의 컴파일 설정에 따라
, TCHAR
입니다 중 하나 char
또는 WCHAR
(또는 wchar_t
).
멀티 바이트 문자열 설정을 사용하는 경우 TCHAR
은 char과 동일합니다. 문자열을 TCHAR*
으로 설정하면됩니다.
유니 코드 문자열 설정을 사용하는 경우 TCHAR
은 와이드 문자이며 WideCharToMultiByte을 사용하여 변환해야합니다.
내가 생각하는 Visual Studio를 사용하는 경우 프로젝트 속성에서 문자 집합 아래에서이 설정을 변경할 수 있습니다.
다릅니다. 그런 다음이 방법은 여전히 작동 할 수 _UNICODE
및 UNICODE
을 사용하는 경우
const TCHAR example = _T('Q');
std::string mystring(1, example);
하지만 캐릭터에 convertable하지 않을 수 있습니다 : 당신이 _UNICODE
또는 UNICODE
을 정의하지 않은 경우에 당신은이 같은 문자를 포함하는 문자열을 만들 수 있습니다 a char
. 이 경우 문자를 문자열로 변환해야합니다. 일반적으로 wcstombs
또는 WideCharToMultiByte
과 같은 전화를 사용해야 인코딩을 더 완벽하게 제어 할 수 있습니다.
어느 쪽이든 결과에 대한 버퍼를 할당하고이 버퍼에서 std::string
을 구성해야합니다. 완료되면 버퍼를 할당 해제해야합니다 (또는 자동으로 발생하도록 vector<char>
과 같은 것을 사용하십시오).
브라이언이 말한 모든 것을 수행하십시오. 당신이 필요로하는 코드 페이지에 그것을 얻을되면, 당신은 할 수 있습니다 :
std::string s(myTchar, myTchar+length);
또는
std::wstring s(myTchar, myTchar+length);
문자열로 그것을 얻을 수 있습니다.
는 또한 와이드에 :,이를 위해
std::wstring str = CT2W(_T("A TCHAR string"));
CT2W = 헌장 텍스트 예컨대을 편리 ATL 텍스트 변환 매크로를 사용할 수 있습니다.
변환을위한 코드 페이지를 지정할 수도 있습니다. (현재의 형태로)
std::wstring str = CT2W(_T("A TCHAR string"), CP_SOMECODEPAGE);
이 매크로는 VS2005 이후 비주얼 스튜디오 C++ 프로젝트에 사용할 수 있었다.
반환되는 TCHAR을 초기 값으로 사용하여 새로운 std :: string을 만듭니다. TCHAR xyz = fun(); 문자열 변환 된 형식 (xyz); ? – Leonidas