Fóra

Trieda reťazcov Mac C++ - porovnať malé a veľké písmená?

T

roztopiť sa

Pôvodný plagát
4. decembra 2006
Katy, Texas
  • 8. júna 2007
Pozrel som sa na online referenciu (cppreference.com) a moju knihu C++, ale nemôžem nájsť porovnávanie (reťazec necitlivé) Určite existujú porovnania C-String bez ohľadu na veľkosť písmen, ale radšej by som použil porovnanie v C++, ak existuje.

(Navyše, teraz som na misii, aby som to našiel...)

Ďakujem, Todd T

roztopiť sa

Pôvodný plagát
4. decembra 2006


Katy, Texas
  • 8. júna 2007
Myslím, že by som mohol použiť bitovú sadu OR so známym reťazcom všetkých medzier (X'20') dlhším ako potrebujem a potom otestovať porovnanie malých písmen...

vidím

25. októbra 2004
  • 8. júna 2007
Je to takmer neuveriteľné, ale neverím, že štandardná knižnica C++ nerozlišuje veľkosť písmen.

Ak sa nechcete alebo nepotrebujete starať o miestne nastavenia, potom:
_stricmp( str1.c_str(), str2.c_str() )
Je to najjednoduchšie riešenie (aj celkom efektívne).

Miestne nastavenia veci dosť komplikujú (dobre, sú to skutočne nedostatky štandardnej knižnice, ktoré to robia tak komplikovaným).
Pozriem sa, či nájdem odkaz na niečo, čo sa zaoberá miestnymi nastaveniami...
tu je jeden: http://lafstern.org/matt/col2_new.pdf
Neviem, či naozaj vie, o čom hovorí, ale znie to tak. Chvíľu o tom hovorí, aby ste problém pochopili, ale môžete preskočiť na koniec a pozrieť sa na posledný blok kódu, kde nájdete jeho najlepšie riešenie. T

roztopiť sa

Pôvodný plagát
4. decembra 2006
Katy, Texas
  • 9. júna 2007
Ďakujem iSee. Áno, asi má pravdu. Pre moje účely však budem pracovať so 7-bitovými znakovými kódmi ASCII a myslím si, že tento kus kódu bude dosť dobrý.

Ďakujem za potvrdenie - som rád, že som si to nenechal ujsť.

Todd

Kód: |_+_| T

roztopiť sa

Pôvodný plagát
4. decembra 2006
Katy, Texas
  • 10. júna 2007
iSee povedal: Ak sa nechcete alebo nepotrebujete starať o miestne nastavenia, potom:
_stricmp( str1.c_str(), str2.c_str() )
Je to najjednoduchšie riešenie (aj celkom efektívne).

Dobre, vzdávam sa. Na čo si prišiel _strimp ?

Todd IN

wittegijt

18. február 2007
Eindhoven
  • 11. júna 2007
toddburch povedal: Dobre, vzdávam sa. Na čo si prišiel _strimp ?

Todd

Je to vec Windowsu. Unixové knižnice používajú strcasecmp, je v .

Wittegijt.

vidím

25. októbra 2004
  • 11. júna 2007
toddburch povedal: Dobre, vzdávam sa. Na čo si prišiel _strimp ?

Todd

Dobre, prepáč, že som to tam vyhodil.

Myslel som, že je súčasťou štandardnej knižnice C, ale nie je. Len sa neoficiálne objavuje pod rôznymi názvami v rôznych implementáciách knižnice C. Takže porovnanie, v ktorom sa nerozlišujú malé a veľké písmená, nie je ani oficiálnou súčasťou oficiálnej knižnice C. Bože. Vyzerá to ako veľké opomenutie. Pod VS je to _stricmp() alebo stricmp(), pod CodeWarrior pre Mac je to stricmp() alebo strcasecmp() a pod OS X 10.4/Xcode je to strcasecmp().

Keď sa nad tým zamyslím, malo by mi to napovedať hlavné podčiarknutie.

Myslím, že ak chcete vyhovieť štandardu C, musíte implementovať svoje vlastné pomocou tolower() (alebo toupper()) v slučke.

Pozrime sa, že prvý prechod môže byť (Toto je z hlavy, NIE testovaný kód):
Kód: |_+_|
Každopádne ešte raz sa ospravedlňujem za zlú radu. Myslím, že som naozaj neurobil veľa kódovania C/C++ na Mac OS X, kde som sa chcel vyhnúť OS API (CFString, atď.) od čias CodeWarrior... T

roztopiť sa

Pôvodný plagát
4. decembra 2006
Katy, Texas
  • 11. júna 2007
Ahhhha. Dáva zmysel. Vďaka Wittegijt & iSee. Čítal som svoju 'Encyklopédiu C' (Sybex, 1991) a všetky (alebo prinajmenšom veľa) neštandardných kľúčových slov od Microsoftu majú podčiarknutie aj pre prvý znak. Mal mi dať tip.

Dobre, teraz k tomu strcasecmp() . Webová stránka cppreference.com, ktorú používam, vyzerá len ako štandardné C/C++. Hľadal som špecifickú referenčnú stránku Mac OS X XCode a nenašiel som ju. Aká je dobrá referenčná webová stránka Mac OS X C++? Alebo je niekde v pomocníkovi XCode zabudovaná referencia C++ a ja som ju jednoducho nenašiel? Alebo, ak to všetko zlyhá, je v Apple Development Center jeden, ktorý som tiež vynechal?

Tak veľké, ako sú obrázky XCode diskov, ktoré si stiahnem a nainštalujem, keď som bol vyzvaný, určite tam niekto je odkaz na jazyk - myslím, Java veci, ktoré som si pôvodne stiahol, boli OBROVSKÉ.

Todd

Krevnik

8. september 2003
  • 11. júna 2007
toddburch povedal: Dobre, teraz strcasecmp() . Webová stránka cppreference.com, ktorú používam, vyzerá len ako štandardné C/C++. Hľadal som špecifickú referenčnú stránku Mac OS X XCode a nenašiel som ju. Aká je dobrá referenčná webová stránka Mac OS X C++? Alebo je niekde v pomocníkovi XCode zabudovaná referencia C++ a ja som ju jednoducho nenašiel? Alebo, ak to všetko zlyhá, je v Apple Development Center jeden, ktorý som tiež vynechal?

Je to tam, ale nemyslím si, že to ide cez funkcie C, ktoré sú vo vrstve POSIX, len všetky doplnky Apple k POSIX. Terminál môžete použiť na prístup k manuálovým stránkam niektorých z týchto funkcií. 'man strcasecmp' vás zavedie priamo na stránku, kde sa hovorí o tejto funkcii a opíše, ako ju používať.

vidím

25. októbra 2004
  • 11. júna 2007
Prehrabovaním sa v Xcode som našiel odkaz na túto stránku:

http://developer.apple.com/documentation/Darwin/Reference/ManPages/index.html

čo je obsah všetkého na manuálových stránkach OS X vrátane funkcií knižnice C.

Referenčná knižnica Xcode pristupuje okrem iných zdrojov k manuálovým stránkam, takže všetky sú dostupné prostredníctvom Xcode (stále používam „Nájsť vybraný text v referencii API“).

Vyzerá to, že funkcie C sú v sekcii 3. Zdá sa, že dokumentácia pre každú funkciu obsahuje sekciu „štandard“ alebo „história“, ktorá poskytuje informácie o tom, s akým štandardom funkcia vyhovuje. Zrejme bol strcasecmp() presunutý z 'string.h' do 'strings.h' z dôvodov súladu. Nie som si istý, akým spôsobom je to presne v súlade. Myslím, že to znamená, že v string.h by sa nemali objavovať neštandardné funkcie, tak to presunuli do iného hlavičkového súboru. T

roztopiť sa

Pôvodný plagát
4. decembra 2006
Katy, Texas
  • 11. júna 2007
To je skvelá referenčná stránka! Myslel som, že takéto informácie tam niekde sú!