If the input string is ASCII, you can easily expand the string using the methods given above. However if the input string is unicode, that won't work.
Principally, it does:
std::wstring wide(L"does not contain special UTF letters");
std::string multi(wide.begin(), wide.end();
std::cout << multi.c_str();
I used this to convert a wstring for output with a filestream. Though I didn't try it out with "special" UTF-chars, it surely won't work with them, would be interesting whats the result though...