» »

[c++] std::string v wchar_t*

[c++] std::string v wchar_t*

miha22 ::

Pozdravljeni,

probleme imam pri konverziji med temi dvemi tipi. Napisal sem funkcijo ki dela vprasljivo:

ce imam kodo (ki je trenutno postavljena v funkciji convertToChar ) napisano v funkciji od koder bi sicer klical funkcijo convertToChar mi stvar dela, kokr pa dam stvar v funkcijo in potem klicem iz druge na naslednji nacin:

const wchar_t* text = convertToChar(tekst /*tipa std::string) dobim pa ven popaceno verzijo iz cesar ni mogoce nic razbrati. Se vam sanja kaj bi bilo lahko narobe ?

const wchar_t* OptionsState::convertToChar(std::string test)
{
size_t size = ::mbstowcs(NULL,&test[0],test.length());
std::wstring output;
output.resize(size);
::mbstowcs(&output[0],&test[0],test.length());
return output.c_str();
}

Gundolf ::

Prva napaka je ta, da vračaš temporary. Tvoj output je živ le znotraj funkcije, njegovih delov (recimo tistega kar vrne c_str()) ne moreš takole ven prenesti.

miha22 ::

Funkcijo sem spremenil v:

wstring OptionsState::convertChar(std::string test)
{
size_t size = ::mbstowcs(NULL,&test[0],test.length());
std::wstring output;
output.resize(size);
::mbstowcs(&output[0],&test[0],test.length());
return output;
}

in potem v funkciji naredim konverzijo preko const wchar_t* text = convertChar(tekst).c_str();

Dela kot misel.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C - shranjevanje rezultatov iz baze v array

Oddelek: Programiranje
71243 (942) Randomness
»

[C++] charset-a

Oddelek: Programiranje
7915 (772) SasoS
»

[cpp]Kako ugotoviti koliko zapisov je v arrayu?

Oddelek: Programiranje
6845 (764) technolog
»

[C++] Kopiranje char arraya v drug char array

Oddelek: Programiranje
71294 (1165) win64
»

[C++] Unicode, Utf...

Oddelek: Programiranje
61515 (1398) Matako

Več podobnih tem