Forumi

Mac C++ klasa stringa - usporedba neosjetljiva na mala i mala slova?

T

rastopiti

Originalni poster
4. prosinca 2006
Katy, Teksas
  • 8. lipnja 2007
Pogledao sam internetsku referencu (cppreference.com) i svoju C++ knjigu, ali ne mogu pronaći usporedbu koja nije osjetljiva na nizove(). Svakako postoje usporedbe neosjetljive na velika i mala slova u C-Stringu, ali ja bih radije koristio usporedbu na C++ ako postoji.

(Plus, sada sam u misiji da ga pronađem...)

Hvala, Todd T

rastopiti

Originalni poster
4. prosinca 2006


Katy, Teksas
  • 8. lipnja 2007
Pretpostavljam da bih mogao koristiti bitset OR s poznatim nizom svih praznih mjesta dužim nego što mi je potrebno (X'20'), a zatim testirati usporedbu malim slovima...

vidim

25. listopada 2004
  • 8. lipnja 2007
Gotovo je nevjerojatno, ali ne vjerujem da standardna biblioteka C++ ne razlikuje velika i mala slova.

Ako ne želite ili ne trebate brinuti o lokalitetima, tada:
_stricmp(str1.c_str(), str2.c_str())
Najjednostavnije je rješenje (i prilično učinkovito).

Locales prilično kompliciraju stvari (pa, nedostaci standardne biblioteke zapravo čine ovo tako kompliciranim).
Hajde da pogledam mogu li pronaći link za nešto što se bavi lokalitetima...
evo jednog: http://lafstern.org/matt/col2_new.pdf
Ne znam zna li stvarno o čemu govori, ali zvuči kao da zna. Neko vrijeme govori o tome kako biste mogli razumjeti problem, ali možete preskočiti na dno i pogledati zadnji blok koda za njegovo najbolje rješenje. T

rastopiti

Originalni poster
4. prosinca 2006
Katy, Teksas
  • 9. lipnja 2007
Hvala iSee. Da, vjerojatno je u pravu. Međutim, za moje potrebe, radit ću sa 7-bitnim ASCII kodovima znakova i mislim da će ovaj dio koda biti dovoljno dobar.

Hvala na potvrdi - drago mi je vidjeti da nisam samo propustio.

Todd

Šifra: |_+_| T

rastopiti

Originalni poster
4. prosinca 2006
Katy, Teksas
  • 10. lipnja 2007
iSee je rekao: Ako ne želite ili se ne trebate brinuti o lokalitetima, onda:
_stricmp(str1.c_str(), str2.c_str())
Najjednostavnije je rješenje (i prilično učinkovito).

OK, odustajem. Gdje si smislio _stricmp ?

Todd U

wittegijt

18. veljače 2007
Eindhoven
  • 11. lipnja 2007
toddburch je rekao: OK, odustajem. Gdje si smislio _stricmp ?

Todd

To je Windows stvar. Unix knjižnice koriste strcasecmp, on je u .

Wittegijt.

vidim

25. listopada 2004
  • 11. lipnja 2007
toddburch je rekao: OK, odustajem. Gdje si smislio _stricmp ?

Todd

OK, oprosti što sam to izbacio.

Mislio sam da je to dio standardne C biblioteke, ali nije. Samo se pojavljuje, neslužbeno, pod različitim imenima, u raznim implementacijama C biblioteke. Dakle, usporedba neosjetljiva na velika i mala slova također nije službeni dio službene C biblioteke. Bože. Čini se kao veliki propust. Pod VS, to je _stricmp() ili stricmp(), pod CodeWarrior za Mac to je stricmp() ili strcasecmp(), a pod OS X 10.4/Xcode to je strcasecmp().

Kad bolje razmislim, glavna podvlaka mi je trebala dati nagovještaj.

Pretpostavljam da ako se želite uskladiti sa C standardom, morate implementirati svoj vlastiti koristeći tolower() (ili toupper()) u petlji.

Da vidimo kako bi prvi prolaz mogao biti (ovo mi nije palo na pamet, NIJE testiran kod):
Šifra: |_+_|
U svakom slučaju, još jednom, oprostite na lošem savjetu. Pretpostavljam da nisam baš puno radio kodiranje na C/C++ na Mac OS X-u gdje sam želio izbjeći OS API (CFString, itd.) još od dana CodeWarrior-a... T

rastopiti

Originalni poster
4. prosinca 2006
Katy, Teksas
  • 11. lipnja 2007
Ahhhha. Ima smisla. Hvala Wittegijt & iSee. Čitao sam svoju 'Enciklopediju C' (Sybex, 1991.) i sve (ili barem mnoge) nestandardne ključne riječi Microsofta također imaju donju crtu za prvi znak. Trebao me obavijestiti.

OK, sad na strcasecmp() . Web stranica cppreference.com koju sam koristio izgleda kao da je samo standardni C/C++. Tražio sam na googlu referentno mjesto za Mac OS X XCode i nisam ga našao. Koja je dobra referentna web stranica za Mac OS X C++? Ili, postoji li C++ referenca ugrađena u pomoć za XCode negdje, a ja je jednostavno nisam našao? Ili, ako sve to ne uspije, postoji li jedan u Apple Development Centeru koji sam i ja propustio?

Koliko god da su slike diska XCode koje preuzimam i instaliram kada se to od mene zatraži, sigurno postoji neka jezična referenca - mislim, Java stvari koje sam u početku preuzeo bile su OGROMNE.

Todd

Krevnik

8. rujna 2003
  • 11. lipnja 2007
toddburch je rekao: U redu, sada strcasecmp() . Web stranica cppreference.com koju sam koristio izgleda kao da je samo standardni C/C++. Tražio sam na googlu referentno mjesto za Mac OS X XCode i nisam ga našao. Koja je dobra referentna web stranica za Mac OS X C++? Ili, postoji li C++ referenca ugrađena u pomoć za XCode negdje, a ja je jednostavno nisam našao? Ili, ako sve to ne uspije, postoji li jedan u Apple Development Centeru koji sam i ja propustio?

Postoji, ali mislim da ne prelazi preko C funkcija koje su u POSIX sloju, već samo na sve Appleove dodatke POSIX-u. Možete koristiti terminal za pristup stranicama priručnika na nekim od ovih funkcija. 'man strcasecmp' će vas odvesti pravo na stranicu na kojoj se govori o toj funkciji i opisati kako je koristiti.

vidim

25. listopada 2004
  • 11. lipnja 2007
Čeprkajući po Xcodeu, pronašao sam vezu na ovu stranicu:

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

što je tablica sadržaja za sve na OS X man stranicama, uključujući funkcije C biblioteke.

Referentna knjižnica Xcode pristupa stranicama priručnika uz druge resurse, tako da su svi oni dostupni putem Xcodea (ja koristim 'Pronađi odabrani tekst u API Reference' cijelo vrijeme).

Čini se da su C funkcije u odjeljku 3. Čini se da dokumentacija za svaku funkciju sadrži odjeljak 'standard' ili 'povijest' koji daje neke informacije o tome s kojim standardom je funkcija usklađena. Očito je strcasecmp() premješten iz 'string.h' u 'strings.h' iz razloga usklađenosti. Nisam siguran na koji to točno način to čini usklađenim. Pretpostavljam da to znači da se nestandardne funkcije ne bi trebale pojaviti u string.h, pa su ga premjestili u drugu datoteku zaglavlja. T

rastopiti

Originalni poster
4. prosinca 2006
Katy, Teksas
  • 11. lipnja 2007
To je sjajna referentna stranica! Mislio sam da je takva informacija negdje unutra!