2013-04-02 11 views
0

Я использую компилятор mingw. Как сменить wchar_t на char?convert wchar_t to char C++

Data(HWND hwnd, wchar_t szFileName[MAX_PATH]) 
{ 
    string sIn; 
    ifstream infile; 
    infile.open(szFileName); 
    infile.seekg(0,ios::beg); 

    // fill vector with file rows 
    while (getline(infile,sIn)) 
    { 
     fileRows.push_back(sIn); 
    } 
} 

Я хотел бы преобразовать wchar_t szFileName обугливаться szFileNameChar.

+0

[ 'зЬй :: wstring_convert'] (http://en.cppreference.com/w/cpp/locale/ wstring_convert). – chris

+1

Плохой вопрос. char и wchar не описывают кодировку того, что хранится. Что нужно спросить, какова кодировка текста в ваших строках (как для символов, так и для wchar_t). После этого вы можете обсудить, как конвертировать из одного в другое. –

ответ

5
string str("i'm char[]"); 
wstring wstr(str.begin(), str.end()); 

wstring wstr(L"i'm wchar_t[]"); 
string str(wstr.begin(), wstr.end()); 

Чтобы увидеть подробное описание, пожалуйста, обратитесь к следующему сообщению: std::wstring VS std::string

+3

Это может работать для текста ASCII, но это зависит от языка и не будет работать для некоторых кодировок символов. – user657267

+0

@luksy Да. Спасибо за разъяснение. – gongzhitaao