.[ ČeskéHry.cz ].
Řetězce
Jdi na stránku Předchozí  1, 2, 3  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 23. květen 2012, 16:12:20    Předmět: Odpovědět s citátem

Ja som posledne ~3 roky pod C++ uz tiez s pointermi problemy nemal, lebo clovek sa veeelmi rychlo nauci s nimi kodit defenzivne Smile

Ale ten pokoj na dusi, ze mi to uz v C# NEMOZE NAHODNE padnut (lebo C# runtime garantovane vyhodi Mem Exception pri prvom priechode kodom), to je proste krasa Smile


Je ale pravda, ze na nieco je char * dobre - na nich som sa prakticky, kedysi pradavno, naucil kodit defenzivne s pointermi a alokovat/dealokovat ich v C-tor/D-tor - takze vlastne su na nieco dobre Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 23. květen 2012, 16:13:07    Předmět: Odpovědět s citátem

Perry: A co std::stringstream? Do toho mozes uplne luxusne rvat cisla. A krasne ti vrati std::string. Nevidim nikde nijaky problem.
Ak ti chyba, mozes si zaregistrovat pokojne napriklad globalnu funkciu...
Edit: Dokonca preco nie template:
kód:

template class<Whatever>
string operator+(const string & a, const Whatever & b) {
  stringstream ss; ss << a << b; return ss.str();
}
template class<Whatever>
string & operator+=(string & a, const Whatever & b) {
  stringstream ss; ss << a << b; a = ss.str(); return a;
}

Moznosti milion, vsetky krasne priamo s STL. A krasne ti bude fungovat napriklad
kód:
string lama3 = string("lama") + 3;

_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.


Naposledy upravil pcmaster dne 23. květen 2012, 16:38:21, celkově upraveno 6 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 23. květen 2012, 16:16:01    Předmět: Odpovědět s citátem

Jo.. std::stringstream tam je... ale prostě se mi nějak nelíbí Very Happy Jsem zvyklý na konkatenace řetězců ze C# přes "+".. že tam připojim cokoliv.... tak jsem si to napsal ručně..
Navíc jsem si tam dopsal i různé "replace" a další Util metody, takže mi to šetří čas a práci
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 23. květen 2012, 18:55:53    Předmět: Odpovědět s citátem

jj - stringstream bez overloadnutia je naprd - rozbija to kod zbytocne

Aj ked, stale je to lepsie ako itoa Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 23. květen 2012, 22:18:00    Předmět: Odpovědět s citátem

Vaše nenávist vůči používání char* mi přijde stejně inteligentní jako nenávist vůči černochům. Cool
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 23. květen 2012, 22:45:39    Předmět: Odpovědět s citátem

VladR> ad pouziti char* - porad se ho nejde uplne zbavit kvuli retezcovym konstantam a literalum. Ale pro beznou manipulaci se fakt nehodi.

Jinak jake vsechny operace patri do tridy pro retezce je otazka... ale to je vecnou schizofrenii objektoveho programovani, ze kazda operace musi byt v nejake tridy a zaroven velke tridy jsou zlo.
Ale jinak jsem spis pro pouziti (slusnych, ne printf!) formatovacich retezcu, protoze prime konkatenace a zapisy do streamu se lokalizuji dost spatne.
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 24. květen 2012, 00:21:14    Předmět: Odpovědět s citátem

Si zabil teraz s tou lokalizaciou - tam sa pouziva este rozkosnejsi typedef unsigned wchar_t * LPWSTR s wcstombs Smile

Ci dnes uz je nieco ine ? Naposledy som riesil lokalizaciu prave s tymto a C++11 som velmi neskumal, ze ci prinieslo nieco nove ohladom lokalizacii.

Inak, co konkretne myslis tymi retazcovymi konstantami ? Preco nie const std::string ? OK, to je prasacke a v triede z toho musis spravit static (resp. ho initnut v deklaracii napr. z const char *), ktory vsak moze narobit problemy kvoli poradiu inicializacie.
No jo, vtedy je ten hnusny const char * asi najlepsi...

Kedze uz tu riesime ten string a kopol som si do C++ kvoli C#, tak v ramci ferovosti to musim spravit aj naopak, lebo pod C# runtime jedna instancia stringu leakuje 4 KB ! Cize, v hre clovek si nemoze len tak jednoducho pouzit string (ale stringBuilder), lebo po par sekundach leakne 1 MB a uz sa pusta GarbageCollector. Z jedneho stringu...

Eosie: Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 24. květen 2012, 07:46:28    Předmět: Odpovědět s citátem

@VladR - proc musi byt lokalizace spojena s wchar_t? - boze vzdyt to nema na lokalizaci vliv

jak si ji udelas (nebo pouzijes treba gettext()) tak ji mas - do char * lze v pohode ulozit ( a spousta knihoven to dela) UTF-8, ktere obsahne cely unicode prostor.

a uz vubec nechapu tu debilni narazku s wcstombs - to treba na win platforme neni potreba - neb i cele GUI je ve wchar_t
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 24. květen 2012, 08:01:48    Předmět: Odpovědět s citátem

VladR> ad lokalizace - to na char/wchar_t nezavisi, klidne muzes pouzit wchar_t a utf16/utf32 nebo char a utf8. Hlavni problem u lokalizace je, ze nektere jazyky maji odlisne poradi slov ve vete a pokud pouzivas primou konkatenaci (nebo formatovani ala printf), tak ti to to poradi zafixuje a pak vznikaji ruzne jazykove paskvily, kdyz se prekladatel snazi vyhovet jak jazyku, tak poradi v jakem se ten text lepi.

btw. k wchar_t samozrejme je nebo muzes dodefinovat wstring Wink

Jinak problem s konstantami typu std::string je v tom, ze ten string v nich je alokovany na heapu, kde se alokuje pri startu programu (nebo pri prvnim vyuziti?) a dealokuje po skonceni programu. A pokud je pouzivas z dalsich objektu, ktere jsou alokovane timhle zpusobem, tak si musis dat pozor na poradi vytvoreni/zruseni, jinak ti program bude hrabat do uvolnene pameti a padat na naprosto nesmyslnych mistech.
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 24. květen 2012, 08:05:02    Předmět: Odpovědět s citátem

OndraSej napsal:
VladR> ad lokalizace - to na char/wchar_t nezavisi, klidne muzes pouzit wchar_t a utf16/utf32 nebo char a utf8. Hlavni problem u lokalizace je, ze nektere jazyky maji odlisne poradi slov ve vete a pokud pouzivas primou konkatenaci (nebo formatovani ala printf), tak ti to to poradi zafixuje a pak vznikaji ruzne jazykove paskvily, kdyz se prekladatel snazi vyhovet jak jazyku, tak poradi v jakem se ten text lepi.


tak tak - alespon neco ve smyslu "Muj ultimatni %1 text, kterej obsahuje %2 reference" - s timhle uz se da pracovat protoze nikdo mam nema problem napsat preklad typu "Hoi tong %2 tong hong honky tonky %1."

mno ale co si budeme vykladat - M$ lokalizovat wp7 nekolik mesicu (podle toho jak se vyjadril Stepan Bechynsky na GDS) - pritom podle me je to otazka dobreho prekladatele a tydne prace ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 24. květen 2012, 08:07:11    Předmět: Odpovědět s citátem

rezna> tak jednoduche to neni, nejde jenom o texty... a navic ti tam chybi nekolik tydnu prace hromady testeru Wink
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 24. květen 2012, 08:11:30    Předmět: Odpovědět s citátem

rezna : presne detaily si uz teraz po rokoch nevybavujem, ale slo tam o kod, ktory bezal nielen na windowsoch a cast textov bola spravena pod linuxom a cast pod winom a zakladny kod uz bol napisany, takze to tam clovek len klasicky doklepaval - nemal moznost to napisat od nuly a trebalo to konvertovat A UTF-8 to nebolo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 24. květen 2012, 08:17:32    Předmět: Odpovědět s citátem

OndraSej napsal:
rezna> tak jednoduche to neni, nejde jenom o texty... a navic ti tam chybi nekolik tydnu prace hromady testeru Wink


mno co jsem pochopil jako testeri slouzili zamestnanci (jako prave Stepan) - kterej mel bezne problemy ze mu mizi tlacitka, nejde prijmout hovor a tak (kvuli tomu prekladu) Wink

jasne, ze pokud chces obsahnout velkou jazykovou mnozinu, tak muj navrh neni dostacujici

ale rozhodne treba v nasi komunite pro CZ, SK, DE, PL, EN preklady je to neco od ceho se muzes odpichnout a resit problemy poradi ve vete.

zas ne kazdej hned lokalizuje cinstinu Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 24. květen 2012, 08:25:07    Předmět: Odpovědět s citátem

VladR napsal:
rezna : presne detaily si uz teraz po rokoch nevybavujem, ale slo tam o kod, ktory bezal nielen na windowsoch a cast textov bola spravena pod linuxom a cast pod winom a zakladny kod uz bol napisany, takze to tam clovek len klasicky doklepaval - nemal moznost to napisat od nuly a trebalo to konvertovat A UTF-8 to nebolo.


aha - takze banda linuxari a windowsaru, kteri se vecne na nicem nedohodnou napsala system pul na pul a proto tam byla lokalizace tak blbe vyresena a proto je lokalizace vsude tak blbe resena?

ad UTF8 - pokud byl wchar_t tak jenom proto aby se do neho cpalo UTF-16, Unicode a nebo UTF-32 (zalezi jestli je 2byte nebo 4byte dle systemu) - takze ono urcite bylo i UTF8, ktere se dava do char a napsat si kolem toho pripadne par rutin zvladne i mene zdatnej koder
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 24. květen 2012, 15:48:20    Předmět: Odpovědět s citátem

Tak predovsetkym je to posrane v Linuxe (nie ze by ma to ale prekvapovalo).

Pod Winom som s lokalizaciou nemal nikdy vyraznejsi problem, ci uz WTF-8 alebo WTF-16.


Ale to uz odbiehame od char * ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna