Forum

Kelas rentetan Mac C++ - perbandingan kes tidak sensitif?

T

meleleh

Poster asal
4 Dis 2006
Katy, Texas
  • 8 Jun 2007
Saya telah mencari dalam rujukan dalam talian (cppreference.com) dan buku C++ saya, tetapi saya tidak dapat mencari rentetan tidak sensitif compare(). Sudah tentu terdapat perbandingan tidak sensitif huruf C-String, tetapi saya lebih suka menggunakan perbandingan C++ jika ada.

(Selain itu, sekarang saya dalam misi mencarinya...)

Terima kasih, Todd T

meleleh

Poster asal
4 Dis 2006


Katy, Texas
  • 8 Jun 2007
Saya rasa saya boleh menggunakan bitset ATAU dengan rentetan yang lebih panjang daripada yang saya perlukan untuk semua kosong (X'20') dan kemudian menguji untuk membandingkan huruf kecil...

saya faham

25 Okt 2004
  • 8 Jun 2007
Ia hampir di luar kepercayaan, tetapi saya tidak percaya perpustakaan C++ standard mempunyai huruf besar-kecil.

Jika anda tidak mahu atau perlu bimbang tentang tempat, maka:
_stricmp( str1.c_str(), str2.c_str() )
Adalah penyelesaian yang paling mudah (juga agak cekap).

Tempatan agak merumitkan perkara (baik, ia benar-benar kekurangan perpustakaan standard yang menjadikannya begitu rumit).
Biar saya lihat jika saya boleh mencari pautan untuk sesuatu yang berkaitan dengan tempat...
ini satu: http://lafstern.org/matt/col2_new.pdf
Saya tidak tahu sama ada dia benar-benar tahu apa yang dia cakapkan, tetapi sepertinya dia tahu. Dia meneruskan untuk seketika tentang perkara ini supaya anda boleh memahami isu itu, tetapi anda boleh melangkau ke bahagian bawah dan menyemak blok kod terakhir untuk penyelesaian terbaiknya. T

meleleh

Poster asal
4 Dis 2006
Katy, Texas
  • 9 Jun 2007
Terima kasih iSee. Ya, dia mungkin betul. Walau bagaimanapun, untuk tujuan saya, saya akan bekerja dengan kod aksara ASCII 7-bit, dan saya fikir bahagian kod ini akan cukup baik.

Terima kasih atas pengesahan - gembira melihat saya bukan sahaja terlepasnya.

Todd

Kod: |_+_| T

meleleh

Poster asal
4 Dis 2006
Katy, Texas
  • 10 Jun 2007
iSee berkata: Jika anda tidak mahu atau perlu bimbang tentang setempat, maka:
_stricmp( str1.c_str(), str2.c_str() )
Adalah penyelesaian yang paling mudah (juga agak cekap).

OK, saya mengalah. Di mana anda datang dengan _stricmp ?

Todd DALAM

wittegijt

18 Feb 2007
Eindhoven
  • 11 Jun 2007
toddburch berkata: OK, saya menyerah. Di mana anda datang dengan _stricmp ?

Todd

Ia adalah perkara Windows. Perpustakaan Unix menggunakan strcasecmp, ia berada dalam .

Wittegijt.

saya faham

25 Okt 2004
  • 11 Jun 2007
toddburch berkata: OK, saya menyerah. Di mana anda datang dengan _stricmp ?

Todd

OK, maaf kerana membuangnya ke sana.

Saya fikir ia adalah sebahagian daripada perpustakaan C standard, tetapi tidak. Ia hanya muncul, secara tidak rasmi, di bawah nama yang berbeza, dalam pelbagai pelaksanaan perpustakaan C. Jadi perbandingan tidak sensitif huruf besar-besaran bukanlah bahagian rasmi perpustakaan C rasmi sama ada. Ya ampun. Nampaknya seperti peninggalan yang begitu besar. Di bawah VS, ia adalah _stricmp() atau stricmp(), di bawah CodeWarrior untuk Mac ia adalah stricmp() atau strcasecmp(), dan di bawah OS X 10.4/Xcode ia adalah strcasecmp().

Jika difikirkan semula, garis bawah utama sepatutnya memberi saya petunjuk.

Saya rasa jika anda ingin mematuhi piawaian C anda perlu melaksanakan sendiri menggunakan tolower() (atau toupper()) dalam satu gelung.

Mari lihat hantaran pertama mungkin (Ini di luar kepala saya, BUKAN kod yang diuji):
Kod: |_+_|
Bagaimanapun, sekali lagi, maaf atas nasihat yang tidak baik. Saya rasa saya tidak benar-benar melakukan banyak pengekodan C/C++ pada Mac OS X di mana saya ingin mengelakkan API OS (CFString, dll.) sejak zaman CodeWarrior... T

meleleh

Poster asal
4 Dis 2006
Katy, Texas
  • 11 Jun 2007
Ahhhha. Masuk akal. Terima kasih Wittegijt & iSee. Saya telah membaca 'Ensiklopedia C' saya (Sybex, 1991) dan semua (atau banyak, sekurang-kurangnya) kata kunci bukan standard oleh Microsoft semuanya mempunyai garis bawah untuk aksara pertama juga. Sepatutnya memberitahu saya.

OK, sekarang untuk strcasecmp() . Tapak web cppreference.com yang saya gunakan kelihatan hanya C/C++ standard. Saya telah mencari tapak rujukan khusus Mac OS X XCode di Google dan tidak menemuinya. Apakah tapak web rujukan Mac OS X C++ yang bagus? Atau, adakah rujukan C++ terbina dalam bantuan XCode di suatu tempat dan saya tidak menemuinya? Atau, gagal semua itu, adakah terdapat satu di Pusat Pembangunan Apple yang saya juga terlepas?

Sebesar XCode diskimages yang saya muat turun dan pasang apabila digesa, pasti ada rujukan bahasa di sana seseorang - Maksud saya, bahan Java yang saya muat turun pada mulanya adalah BESAR.

Todd

Krevnik

8 Sep 2003
  • 11 Jun 2007
toddburch berkata: OK, sekarang untuk strcasecmp() . Tapak web cppreference.com yang saya gunakan kelihatan hanya C/C++ standard. Saya telah mencari tapak rujukan khusus Mac OS X XCode di Google dan tidak menemuinya. Apakah tapak web rujukan Mac OS X C++ yang bagus? Atau, adakah rujukan C++ terbina dalam bantuan XCode di suatu tempat dan saya tidak menemuinya? Atau, gagal semua itu, adakah terdapat satu di Pusat Pembangunan Apple yang saya juga terlepas?

Ia ada di sana, tetapi saya tidak fikir ia mengatasi fungsi C yang terdapat dalam lapisan POSIX, hanya semua penambahan Apple pada POSIX. Anda boleh menggunakan terminal untuk mengakses halaman manual pada beberapa fungsi ini. 'man strcasecmp' akan membawa anda terus ke halaman bercakap tentang fungsi itu dan menerangkan cara menggunakannya.

saya faham

25 Okt 2004
  • 11 Jun 2007
Melihat-lihat dalam Xcode, saya menjumpai pautan ke halaman ini:

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

yang merupakan jadual kandungan untuk segala-galanya dalam halaman manual OS X, termasuk fungsi perpustakaan C.

Pustaka rujukan Xcode mengakses halaman manual sebagai tambahan kepada sumber lain, jadi ini semua tersedia melalui Xcode (saya menggunakan 'Cari Teks Terpilih dalam Rujukan API' sepanjang masa).

Nampaknya fungsi C berada dalam bahagian 3. Nampaknya dokumentasi untuk setiap fungsi mengandungi bahagian 'standard' atau 'sejarah' yang memberikan sedikit maklumat tentang piawaian yang dipatuhi oleh fungsi tersebut. Nampaknya strcasecmp() telah dialihkan daripada 'string.h' ke 'strings.h' atas sebab pematuhan. Saya tidak pasti dengan cara yang tepat yang menjadikannya patuh. Saya rasa ini bermakna fungsi bukan standard tidak sepatutnya muncul dalam string.h, jadi mereka mengalihkannya ke fail pengepala lain. T

meleleh

Poster asal
4 Dis 2006
Katy, Texas
  • 11 Jun 2007
Itu halaman rujukan yang bagus! Saya fikir maklumat seperti itu ada di sana di suatu tempat!