問題は、wstring を文字列に変換する方法です。
次の例があります:
#include <string>
#include <iostream>
int main()
{
std::wstring ws = L"Hello";
std::string s( ws.begin(), ws.end() );
//std::cout <<"std::string = "<<s<<std::endl;
std::wcout<<"std::wstring = "<<ws<<std::endl;
std::cout <<"std::string = "<<s<<std::endl;
}
コメントアウトされた行の出力は次のとおりです。
std::string = Hello
std::wstring = Hello
std::string = Hello
ただし、なしは次のとおりです。
std::wstring = Hello
例に何か問題がありますか?上記のように変換できますか?
編集
新しい例(いくつかの回答を考慮して)は
#include <string>
#include <iostream>
#include <sstream>
#include <locale>
int main()
{
setlocale(LC_CTYPE, "");
const std::wstring ws = L"Hello";
const std::string s( ws.begin(), ws.end() );
std::cout<<"std::string = "<<s<<std::endl;
std::wcout<<"std::wstring = "<<ws<<std::endl;
std::stringstream ss;
ss << ws.c_str();
std::cout<<"std::stringstream = "<<ss.str()<<std::endl;
}
出力は次のとおりです。
std::string = Hello
std::wstring = Hello
std::stringstream = 0x860283c
したがって、stringstream を使用して wstring を文字列に変換することはできません。