문제

I have a class which returns a typed pointer to a "const TCHAR". I need to convert it to a std::string but I have not found a way to make this happen.

Can anyone provide some insight on how to convert it?

도움이 되었습니까?

해결책

Depending on your compiling settings, TCHAR is either a char or a WCHAR (or wchar_t).

If you are using the multi byte character string setting, then your TCHAR is the same as a char. So you can just set your string to the TCHAR* returned.

If you are using the unicode character string setting, then your TCHAR is a wide char and needs to be converted using WideCharToMultiByte.

If you are using Visual Studio, which I assume you are, you can change this setting in the project properties under Character Set.

다른 팁

캘린더 승인에 비슷한 문제가있었습니다.쉬운 솔루션은 승인 된 상태에서 목록을 "필터링"하는 것이 었습니다.

You can also use the handy ATL text conversion macros for this, e.g.:

std::wstring str = CT2W(_T("A TCHAR string"));

CT2W = Const Text To Wide.

You can also specify a code page for the conversion, e.g.

std::wstring str = CT2W(_T("A TCHAR string"), CP_SOMECODEPAGE);

These macros (in their current form) have been available to Visual Studio C++ projects since VS2005.

It depends. If you haven't defined _UNICODE or UNICODE then you can make a string containing the character like this:

const TCHAR example = _T('Q');
std::string mystring(1, example);

If you have are using _UNICODE and UNICODE then this approach may still work but the character may not be convertable to a char. In this case you will need to convert the character to a string. Typically you need to use a call like wcstombs or WideCharToMultiByte which gives you fuller control over the encoding.

Either way you will need to allocate a buffer for the result and construct the std::string from this buffer, remembering to deallocate the buffer once you're done (or use something like vector<char> so that this happens automatically).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top