Forum

Kelas string Mac C++ - perbandingan tidak peka huruf besar-kecil?

T

mencairkan

poster asli
4 Desember 2006
Katy, Texas
  • 8 Juni 2007
Saya telah mencari referensi online (cppreference.com) dan buku C++ saya, tetapi saya tidak dapat menemukan string yang tidak sensitif dibandingkan (). Tentu saja ada perbandingan tidak sensitif huruf C-String, tetapi saya lebih suka menggunakan perbandingan C++ jika ada.

(Plus, sekarang saya sedang dalam misi untuk menemukannya ...)

Terima kasih, Todd T

mencairkan

poster asli
4 Desember 2006


Katy, Texas
  • 8 Juni 2007
Saya kira saya bisa menggunakan bitset OR dengan string semua kosong yang lebih lama dari yang saya butuhkan (X'20') dan kemudian menguji perbandingan huruf kecil ...

jadi begitu

25 Oktober 2004
  • 8 Juni 2007
Ini hampir melampaui keyakinan, tapi saya tidak percaya pustaka C++ standar memiliki case-insensive.

Jika Anda tidak ingin atau perlu khawatir tentang lokal, maka:
_stricmp( str1.c_str(), str2.c_str() )
Apakah solusi paling sederhana (juga cukup efisien).

Lokal sedikit memperumit masalah (yah, sebenarnya kekurangan perpustakaan standar yang membuat ini sangat rumit).
Coba lihat apakah saya dapat menemukan tautan untuk sesuatu yang berhubungan dengan lokal...
ini dia: http://lafstern.org/matt/col2_new.pdf
Saya tidak tahu apakah dia benar-benar tahu apa yang dia bicarakan, tetapi sepertinya dia tahu. Dia melanjutkan sebentar tentang ini sehingga Anda dapat memahami masalahnya, tetapi Anda dapat melompat ke bawah dan memeriksa blok kode terakhir untuk solusi terbaiknya. T

mencairkan

poster asli
4 Desember 2006
Katy, Texas
  • 9 Juni 2007
Terima kasih iSee. Ya, dia mungkin benar. Namun, untuk tujuan saya, saya akan bekerja dengan kode karakter ASCII 7-bit, dan saya pikir potongan kode ini akan cukup baik.

Terima kasih atas konfirmasinya - senang melihat saya tidak melewatkannya begitu saja.

Todd

Kode: |_+_| T

mencairkan

poster asli
4 Desember 2006
Katy, Texas
  • 10 Juni 2007
iSee berkata: Jika Anda tidak ingin atau perlu khawatir tentang lokal, maka:
_stricmp( str1.c_str(), str2.c_str() )
Apakah solusi paling sederhana (juga cukup efisien).

Oke, saya menyerah. Di mana Anda datang dengan? _strimp ?

Todd DI DALAM

wittegijt

18 Februari 2007
Eindhoven
  • 11 Juni 2007
toddburch berkata: Oke, saya menyerah. Di mana Anda datang dengan? _strimp ?

Todd

Ini masalah Windows. Pustaka Unix menggunakan strcasecmp, ada di .

Wittegijt.

jadi begitu

25 Oktober 2004
  • 11 Juni 2007
toddburch berkata: Oke, saya menyerah. Di mana Anda datang dengan? _strimp ?

Todd

OK, maaf untuk membuang itu di luar sana.

Saya pikir itu adalah bagian dari perpustakaan C standar, tetapi ternyata tidak. Itu hanya muncul, secara tidak resmi, dengan nama yang berbeda, di berbagai implementasi perpustakaan C. Jadi perbandingan peka huruf besar-kecil juga bukan bagian resmi dari perpustakaan C resmi. Astaga. Sepertinya kelalaian yang sangat besar. Di bawah VS, itu _stricmp() atau stricmp(), di bawah CodeWarrior untuk Mac itu stricmp() atau strcasecmp(), dan di bawah OS X 10.4/Xcode itu strcasecmp().

Kalau dipikir-pikir, garis bawah utama seharusnya memberi saya petunjuk.

Saya kira jika Anda ingin menyesuaikan dengan standar C, Anda harus mengimplementasikannya sendiri menggunakan tolower() (atau toupper()) dalam satu lingkaran.

Mari kita lihat pass pertama mungkin (Ini di luar kepala saya, BUKAN kode yang diuji):
Kode: |_+_|
Anyway, sekali lagi, maaf untuk saran yang buruk. Saya kira saya belum benar-benar melakukan banyak pengkodean C/C++ di Mac OS X di mana saya ingin menghindari OS API (CFString, dll.) sejak hari-hari CodeWarrior ... T

mencairkan

poster asli
4 Desember 2006
Katy, Texas
  • 11 Juni 2007
Ahhhh. Masuk akal. Terima kasih Wittegijt & iSee. Saya telah membaca 'Encyclopedia C' saya (Sybex, 1991) dan semua (atau banyak, setidaknya) kata kunci non-standar oleh Microsoft semuanya memiliki garis bawah untuk karakter pertama juga. Seharusnya memberi tahu saya.

Oke, sekarang ke strcasecmp() . Situs web cppreference.com yang saya gunakan tampaknya hanya C/C++ standar. Saya telah mencari di Google untuk situs referensi khusus Mac OS X XCode dan belum menemukannya. Apa situs referensi Mac OS X C++ yang bagus? Atau, apakah ada referensi C++ yang dibangun ke dalam bantuan XCode di suatu tempat dan saya belum menemukannya? Atau, jika gagal, apakah ada satu di Pusat Pengembangan Apple yang saya lewatkan juga?

Sebesar diskimages XCode yang saya unduh dan instal saat diminta, pasti ada referensi bahasa di sana seseorang - maksud saya, hal-hal Java yang saya unduh awalnya BESAR.

Todd

Krevnik

8 September 2003
  • 11 Juni 2007
toddburch berkata: Oke, sekarang untuk strcasecmp() . Situs web cppreference.com yang saya gunakan tampaknya hanya C/C++ standar. Saya telah mencari di Google untuk situs referensi khusus Mac OS X XCode dan belum menemukannya. Apa situs referensi Mac OS X C++ yang bagus? Atau, apakah ada referensi C++ yang dibangun ke dalam bantuan XCode di suatu tempat dan saya belum menemukannya? Atau, jika gagal, apakah ada satu di Pusat Pengembangan Apple yang saya lewatkan juga?

Itu ada, tapi saya tidak berpikir itu melampaui fungsi C yang ada di lapisan POSIX, hanya semua tambahan Apple ke POSIX. Anda dapat menggunakan terminal untuk mengakses halaman manual pada beberapa fungsi ini. 'man strcasecmp' akan membawa Anda langsung ke halaman yang membahas tentang fungsi itu dan menjelaskan cara menggunakannya.

jadi begitu

25 Oktober 2004
  • 11 Juni 2007
Mencari-cari di Xcode, saya menemukan tautan ke halaman ini:

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

yang merupakan daftar isi untuk semua yang ada di halaman manual OS X, termasuk fungsi pustaka C.

Pustaka referensi Xcode mengakses halaman manual selain sumber daya lain, jadi ini semua tersedia melalui Xcode (saya selalu menggunakan 'Temukan Teks yang Dipilih dalam Referensi API').

Sepertinya fungsi C ada di bagian 3. Sepertinya dokumentasi untuk setiap fungsi berisi bagian 'standar' atau 'riwayat' yang memberikan beberapa info tentang standar yang dipatuhi oleh fungsi tersebut. Rupanya strcasecmp() dipindahkan dari 'string.h' ke 'strings.h' karena alasan kepatuhan. Saya tidak yakin dengan cara apa yang membuatnya sesuai. Saya kira itu berarti bahwa fungsi non-standar seharusnya tidak muncul di string.h, jadi mereka memindahkannya ke file header yang berbeda. T

mencairkan

poster asli
4 Desember 2006
Katy, Texas
  • 11 Juni 2007
Itu halaman referensi yang bagus! Saya pikir info seperti itu ada di suatu tempat!