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
|
Zaslal: 23. květen 2012, 16:12:20 Předmět: |
|
|
Ja som posledne ~3 roky pod C++ uz tiez s pointermi problemy nemal, lebo clovek sa veeelmi rychlo nauci s nimi kodit defenzivne
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
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  |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 23. květen 2012, 16:13:07 Předmět: |
|
|
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 |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 23. květen 2012, 16:16:01 Předmět: |
|
|
Jo.. std::stringstream tam je... ale prostě se mi nějak nelíbí 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 |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 23. květen 2012, 18:55:53 Předmět: |
|
|
jj - stringstream bez overloadnutia je naprd - rozbija to kod zbytocne
Aj ked, stale je to lepsie ako itoa  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 23. květen 2012, 22:18:00 Předmět: |
|
|
Vaše nenávist vůči používání char* mi přijde stejně inteligentní jako nenávist vůči černochům.  _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
OndraSej

Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 23. květen 2012, 22:45:39 Předmět: |
|
|
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 |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 24. květen 2012, 00:21:14 Předmět: |
|
|
Si zabil teraz s tou lokalizaciou - tam sa pouziva este rozkosnejsi typedef unsigned wchar_t * LPWSTR s wcstombs
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:  |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 24. květen 2012, 07:46:28 Předmět: |
|
|
@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 |
|
 |
OndraSej

Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 24. květen 2012, 08:01:48 Předmět: |
|
|
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
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 |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 24. květen 2012, 08:05:02 Předmět: |
|
|
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 |
|
 |
OndraSej

Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 24. květen 2012, 08:07:11 Předmět: |
|
|
rezna> tak jednoduche to neni, nejde jenom o texty... a navic ti tam chybi nekolik tydnu prace hromady testeru  _________________ http://trionteam.net |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 24. květen 2012, 08:11:30 Předmět: |
|
|
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 |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 24. květen 2012, 08:17:32 Předmět: |
|
|
OndraSej napsal: |
rezna> tak jednoduche to neni, nejde jenom o texty... a navic ti tam chybi nekolik tydnu prace hromady testeru  |
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)
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  |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 24. květen 2012, 08:25:07 Předmět: |
|
|
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 |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 24. květen 2012, 15:48:20 Předmět: |
|
|
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 |
|
 |
|