Forum » Programiranje » [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();
}
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C - shranjevanje rezultatov iz baze v arrayOddelek: Programiranje | 1243 (942) | Randomness |
» | [C++] charset-aOddelek: Programiranje | 915 (772) | SasoS |
» | [cpp]Kako ugotoviti koliko zapisov je v arrayu?Oddelek: Programiranje | 845 (764) | technolog |
» | [C++] Kopiranje char arraya v drug char arrayOddelek: Programiranje | 1294 (1165) | win64 |
» | [C++] Unicode, Utf...Oddelek: Programiranje | 1515 (1398) | Matako |