Monday, August 21, 2006

How to convert from std::string to CString?

This is simple... Use the CString constructor.
std::string strStdString ("Hello!");

// Using CString Constructor
CString strCString (strStdString.c_str ());

Let me add that CStringT can construct from both character or wide-character strings. i.e. It can convert from char* (i.e. LPSTR) or from wchar_t* (LPWSTR).

In other words, char-specialization (of CStringT) i.e. CStringA, wchar_t-specilization CStringW, and TCHAR-specialization CString can be constructed from either char or wide-character, null terminated (null-termination is very important here) string sources.

How to convert from CString to std::string?

There are really many ways to do it.

But, the simplest one is just this -
CString strSomeCstring ("This is a CString Object");

// Use ANSI variant CStringA to convert to char*; construct from it -
std::string strStdString (CStringA (strSomeCstring));

Note that as discussed in this post, CStringA is a template specialization of class CStringT for type char avaƃ­lable with Visual Studio 7.x and better.