Forumi

Razred nizov Mac C++ - primerjava brez upoštevanja velikih in malih črk?

T

stopiti

Originalni plakat
4. december 2006
Katy, Teksas
  • 8. junij 2007
Pogledal sem spletno referenco (cppreference.com) in svojo knjigo C++, vendar ne najdem primerjave, ki ni občutljiv na niz (). Zagotovo obstajajo primerjave C-String, ki ne občutljive na velike in male črke, vendar bi raje uporabil primerjavo C++, če obstaja.

(Poleg tega sem zdaj na misiji, da ga najdem ...)

Hvala, Todd T

stopiti

Originalni plakat
4. december 2006


Katy, Teksas
  • 8. junij 2007
Predvidevam, da bi lahko uporabil bitni niz ALI z znanim nizom vseh praznin, ki je daljši, kot je potrebno (X'20'), in nato preizkusil primerjavo z malimi črkami ...

vidim

25. oktober 2004
  • 8. junij 2007
Skoraj neverjetno, vendar ne verjamem, da standardna knjižnica C++ ne upošteva velikih in malih črk.

Če ne želite ali morate skrbeti za jezike, potem:
_stricmp(str1.c_str(), str2.c_str())
Je najpreprostejša rešitev (tudi precej učinkovita).

Jezikovni jeziki precej zakomplicirajo stvari (no, v resnici so pomanjkljivosti standardne knjižnice tiste, ki to naredijo tako zapleteno).
Naj preverim, če lahko najdem povezavo za nekaj, kar se ukvarja z jeziki...
evo enega: http://lafstern.org/matt/col2_new.pdf
Ne vem, če res ve, o čem govori, a sliši se, kot da ve. Nekaj ​​časa govori o tem, da lahko razumete težavo, vendar lahko preskočite na dno in si oglejte zadnji blok kode za njegovo najboljšo rešitev. T

stopiti

Originalni plakat
4. december 2006
Katy, Teksas
  • 9. junij 2007
Hvala iSee. Ja, verjetno ima prav. Vendar pa bom za moje namene delal s 7-bitnimi znaki ASCII in mislim, da bo ta del kode dovolj dober.

Hvala za potrditev – vesel sem, da nisem le zamudil.

Todd

Koda: |_+_| T

stopiti

Originalni plakat
4. december 2006
Katy, Teksas
  • 10. junij 2007
iSee je rekel: Če ne želite ali morate skrbeti za jezike, potem:
_stricmp(str1.c_str(), str2.c_str())
Je najpreprostejša rešitev (tudi precej učinkovita).

OK, odneham se. Kje si prišel do tega _stricmp ?

Todd IN

wittegijt

18. februar 2007
Eindhoven
  • 11. junij 2007
toddburch je rekel: V redu, odneham se. Kje si prišel do tega _stricmp ?

Todd

To je stvar Windows. Knjižnice Unix uporabljajo strcasecmp, je v .

Wittegijt.

vidim

25. oktober 2004
  • 11. junij 2007
toddburch je rekel: V redu, odneham se. Kje si prišel do tega _stricmp ?

Todd

OK, oprosti, ker sem to vrgel ven.

Mislil sem, da je del standardne knjižnice C, vendar ni. Pojavlja se, neuradno, pod različnimi imeni, v različnih izvedbah knjižnice C. Primerjava, ki ne razlikuje velikih in malih črk, torej tudi ni uradni del uradne knjižnice C. Joj. Zdi se, da je tako velika opustitev. Pod VS je to _stricmp() ali stricmp(), pod CodeWarrior za Mac je to stricmp() ali strcasecmp(), v OS X 10.4/Xcode pa strcasecmp().

Če dobro pomislim, bi mi moral vodilni podčrtaj dati namig.

Predvidevam, da če se želite uskladiti s standardom C, morate implementirati svoje z uporabo tolower() (ali toupper()) v zanki.

Poglejmo, prvi prehod bi lahko bil (to mi ni na misel, NI preizkušena koda):
Koda: |_+_|
Sicer pa se še enkrat opravičujem za slab nasvet. Predvidevam, da v Mac OS X, kjer sem se želel izogniti OS API-ju (CFString, itd.), res nisem naredil veliko kodiranja C/C++ od časov CodeWarriorja ... T

stopiti

Originalni plakat
4. december 2006
Katy, Teksas
  • 11. junij 2007
Ahhhha. Je smiselno. Hvala Wittegijt & iSee. Prebral sem svojo 'Enciklopedijo C' (Sybex, 1991) in vse (ali vsaj veliko) Microsoftovih nestandardnih ključnih besed imajo tudi podčrtaj za prvi znak. Moral bi me opozoriti.

OK, zdaj pa strcasecmp() . Spletno mesto cppreference.com, ki sem ga uporabljal, izgleda samo kot standard C/C++. Iskal sem v Googlu za referenčno spletno mesto za Mac OS X XCode in ga nisem našel. Kaj je dobro referenčno spletno mesto za Mac OS X C++? Ali pa je nekje v pomoč XCode vgrajena referenca C++ in je preprosto nisem našel? Ali pa, če vse to ne uspe, je kakšen v Apple Development Center, ki sem ga tudi jaz zamudil?

Kakor velike so slike diskov XCode, ki jih prenesem in namestim, ko me pozovem, je tam nekdo zagotovo referenca na jezik – mislim, stvari Java, ki sem jih na začetku prenesel, so bile OGROMNE.

Todd

Krevnik

8. september 2003
  • 11. junij 2007
toddburch je rekel: V redu, zdaj strcasecmp() . Spletno mesto cppreference.com, ki sem ga uporabljal, izgleda samo kot standard C/C++. Iskal sem v Googlu za referenčno spletno mesto za Mac OS X XCode in ga nisem našel. Kaj je dobro referenčno spletno mesto za Mac OS X C++? Ali pa je nekje v pomoč XCode vgrajena referenca C++ in je preprosto nisem našel? Ali pa, če vse to ne uspe, je kakšen v Apple Development Center, ki sem ga tudi jaz zamudil?

Tam je, vendar mislim, da ne gre čez funkcije C, ki so v sloju POSIX, ampak samo vse Applove dodatke POSIX-u. Terminal lahko uporabite za dostop do strani priročnika za nekatere od teh funkcij. 'man strcasecmp' vas bo popeljal naravnost na stran, ki govori o tej funkciji, in opisal, kako jo uporabljati.

vidim

25. oktober 2004
  • 11. junij 2007
Ko sem brskal po Xcodeu, sem našel povezavo do te strani:

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

ki je kazalo za vse na straneh priročnika OS X, vključno s funkcijami knjižnice C.

Referenčna knjižnica Xcode poleg drugih virov dostopa do strani priročnika, tako da so ti vsi na voljo prek Xcode (ves čas uporabljam »Poišči izbrano besedilo v referenci API«).

Videti je, da so funkcije C v razdelku 3. Videti je, da dokumentacija za vsako funkcijo vsebuje razdelek »standard« ali »zgodovina«, ki daje nekaj informacij o tem, s katerim standardom je funkcija skladna. Očitno je bil strcasecmp() premaknjen iz 'string.h' v 'strings.h' zaradi skladnosti. Nisem prepričan, na kakšen način je to skladno. Predvidevam, da to pomeni, da se nestandardne funkcije ne bi smele pojavljati v string.h, zato so ga premaknili v drugo naslovno datoteko. T

stopiti

Originalni plakat
4. december 2006
Katy, Teksas
  • 11. junij 2007
To je odlična referenčna stran! Mislil sem, da so takšni podatki nekje tam!