C++ Locale – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ Locale – C / C++ – Fórum – Programujte.comC++ Locale – C / C++ – Fórum – Programujte.com

 

Cooda
~ Anonymní uživatel
7 příspěvků
16. 8. 2013   #1
-
0
-

Dobrý den všem.

Nemůžu přijít proč tento kod pro zjištění locale (jazyka) momentálně na systémi mě navrací pouze jeden znak c

	char str[LOCALE_NAME_MAX_LENGTH] = {0};
	GetUserDefaultLocaleName( LPWSTR(str), LOCALE_NAME_MAX_LENGTH ); 
    
	MessageBox(hWnd, (LPCSTR)str, "Locale", MB_OK);

Vážně už nemam nervy na to pořád dokolečka zjištovat proč furt něco nefunguje když v tom nevidím žádnou chybu, tak prosím o radu.

díky.

Nahlásit jako SPAM
IP: 212.96.160.–
vitamin+8
Grafoman
16. 8. 2013   #2
-
0
-

#1 Cooda
Mozno je chyba v tom ze locale nacitavas ako wstring (utf-16) a vypisujes ho ako cstring.

Nahlásit jako SPAM
IP: 195.28.77.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Cooda
~ Anonymní uživatel
7 příspěvků
16. 8. 2013   #3
-
0
-

#2 vitamin
Nějaký návrh řešení? Zkoušel jsem i konverzi s sprintf s %c parametrem.

Nahlásit jako SPAM
IP: 212.96.160.–
vitamin+8
Grafoman
16. 8. 2013   #4
-
0
-

Mozes pouzit daku winapi funkciu. Mozno WideCharToMultiByte, alebo daku kniznicu, napr UTF8-CPP, ta dokaze skonvertovat utf16 na utf8 ktory je kompatibilnejsi s ascii :)

inak premenna str by mala byt asi typu wchar_t[]

edit:

Mozno bude stacit pouzit: MessageBoxW :D
 

Nahlásit jako SPAM
IP: 195.28.77.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Cooda
~ Anonymní uživatel
7 příspěvků
16. 8. 2013   #5
-
0
-

Jaký kodování má obyčejný char ? (díky za odpovědi)

Nahlásit jako SPAM
IP: 212.96.160.–
vitamin+8
Grafoman
16. 8. 2013   #6
-
0
-
Nahlásit jako SPAM
IP: 195.28.77.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Cooda
~ Anonymní uživatel
7 příspěvků
16. 8. 2013   #7
-
0
-

Díky za rady. Řešení je zde: 

	char buff[10] = {0};
	wchar_t str[LOCALE_NAME_MAX_LENGTH] = {0};
	GetUserDefaultLocaleName( (LPWSTR)str, LOCALE_NAME_MAX_LENGTH ); 

	WideCharToMultiByte(CP_ACP, 0, str, -1, buff, sizeof(str), NULL, NULL);

	MessageBox(hWnd, buff, "Locale", MB_OK);

Ještě taková otázka, není nutné ještě nějak uvolnit paměť proměnné str abych šetřil paměť?

Nahlásit jako SPAM
IP: 212.96.160.–
vitamin+8
Grafoman
16. 8. 2013   #8
-
0
-

#7 Cooda
premenna str je na stacku, takze ked opustis funkciu tak sa pamet "uvolni".

Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Cooda
~ Anonymní uživatel
7 příspěvků
16. 8. 2013   #9
-
0
-

Takže uvolňovat paměť třeba s funkcí free() bych měl jenom při dynamických proměných, nemam pravdu? Mam totiž třídu ve které mam členskou funkci, typu dynamic char s kterou po danné konverzi navracím řetězec s jazykem systému, a hned po returnu volam fci free() na ten dynamic. buffer. Díky za odpovědi a rady.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 212.96.160.–
vitamin+8
Grafoman
16. 8. 2013   #10
-
0
-

#9 Cooda
free() pouzies len vtedy ak si daco alokoval pomocou malloc() (pripadne calloc(), ...).

Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Cooda
~ Anonymní uživatel
7 příspěvků
16. 8. 2013   #11
-
0
-

takže je lepší použít delete , že?

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 212.96.160.–
vitamin+8
Grafoman
Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 131 hostů

Podobná vlákna

TCPDF, Debian, locale — založil Jirka

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý