2014-12-31 45 views
11

Lütfen win32 konsolunda wchar_t * var öğesini string varStr'ye nasıl dönüştürebilirim?wchar_t * dizesinin dizgeye dönüştürülmesi

// Your wchar_t* 
wchar_t* txt = L"Hello World"; 
wstring ws(txt); 
// your new String 
string str(ws.begin(), ws.end()); 
// Show String 
cout << str << endl; 
+0

http://stackoverflow.com/questions/4339960/how-do-i-convert-wchar-t-to-stdstring –

+0

Kodunuzu görüntüleyin, lütfen (Win32 API) işlevleri – grisha

cevap

35

kullanın wstring, bu kodu bakın. Wchar_t * türünde bir parametre kabul eden bir kurucuya sahiptir.

Bu sınıfa tam bir örnek verelim.

wchar_t* characters=L"Test"; 
std::wstring string(characters); 

Sen String.begin() ve String.end() içeren bir kurucu kullanmak zorunda değilsiniz std yapıcı :: wstring otomatik olarak wchar_t ve kopya dizisi dizisini depolamak için bellek ayırır, çünkü Tahsis edilen bellek.

+0

Tamamen yanlış. Bu, txt’in herhangi bir ascii karakteri içermemesi durumunda başarısız olur. Eğer '' Merhaba Dünya''' ile ''…… 'ile değiştirirseniz,'… '' '' olur. Bu * çözüm * oldukça zararlıdır ve veri kaybına neden olur. – Benio

4

Sen ad std ait wstring sınıfını kullanmalısınız: Teşekkür peşin

+0

Downvoter, downvote'unu açıklayabilir mi? –