Mga Forum

Mac C++ string class - case insensitve compare?

T

matunaw

Orihinal na poster
Disyembre 4, 2006
Katy, Texas
  • Hun 8, 2007
Tumingin ako sa isang online na sanggunian (cppreference.com) at sa aking C++ na libro, ngunit wala akong mahanap na string insensitive compare(). Mayroong tiyak na C-String case insensitive na paghahambing, ngunit mas gugustuhin kong gumamit ng C++ na paghahambing kung mayroon man.

(Dagdag pa, ngayon ako ay nasa isang misyon upang mahanap ito...)

Salamat, Todd T

matunaw

Orihinal na poster
Disyembre 4, 2006


Katy, Texas
  • Hun 8, 2007
Sa palagay ko ay maaari akong gumamit ng bitset OR na may kilalang mas mahaba kaysa sa kailangan kong string ng lahat ng mga blangko (X'20') at pagkatapos ay subukan para sa isang maliit na case na ihambing...

nakita ko

Oktubre 25, 2004
  • Hun 8, 2007
Ito ay halos hindi paniwalaan, ngunit hindi ako naniniwala na ang karaniwang C++ library ay may case-inensetive.

Kung ayaw mo o kailangan mong mag-alala tungkol sa mga lokal, kung gayon:
_stricmp( str1.c_str(), str2.c_str() )
Ay ang pinakasimpleng solusyon (medyo mahusay din).

Ang mga lokal ay medyo nagpapalubha ng mga bagay (well, ito talaga ang mga kakulangan ng karaniwang library na ginagawang kumplikado ito).
Tingnan natin kung makakahanap ako ng link para sa isang bagay na may kinalaman sa mga lokal...
eto ang isa: http://lafstern.org/matt/col2_new.pdf
Hindi ko alam kung alam niya ba talaga ang sinasabi niya, pero parang alam niya. Nagpatuloy siya sandali tungkol dito upang maunawaan mo ang isyu, ngunit maaari kang lumaktaw sa ibaba at tingnan ang huling bloke ng code para sa kanyang pinakamahusay na solusyon. T

matunaw

Orihinal na poster
Disyembre 4, 2006
Katy, Texas
  • Hun 9, 2007
Salamat iSee. Oo, malamang tama siya. Gayunpaman, para sa aking mga layunin, gagawa ako ng 7-bit na ASCII na mga code ng character, at sa palagay ko ang code chunk na ito ay magiging sapat na mabuti.

Salamat sa kumpirmasyon - natutuwa akong makitang hindi ko lang ito na-miss.

Todd

Code: |_+_| T

matunaw

Orihinal na poster
Disyembre 4, 2006
Katy, Texas
  • Hun 10, 2007
Sinabi ng iSee: Kung ayaw mo o kailangan mong mag-alala tungkol sa mga lokal, kung gayon:
_stricmp( str1.c_str(), str2.c_str() )
Ay ang pinakasimpleng solusyon (medyo mahusay din).

OK, sumuko na ako. Saan ka nakaisip _stricmp ?

Todd SA

wittegijt

Peb 18, 2007
Eindhoven
  • Hun 11, 2007
sabi ni toddburch: OK, sumuko na ako. Saan ka nakaisip _stricmp ?

Todd

Ito ay isang bagay sa Windows. Gumagamit ang Unix library ng strcasecmp, nasa .

Wittegijt.

nakita ko

Oktubre 25, 2004
  • Hun 11, 2007
sabi ni toddburch: OK, sumuko na ako. Saan ka nakaisip _stricmp ?

Todd

OK, paumanhin sa pagtatapon niyan.

Akala ko ito ay bahagi ng karaniwang C library, ngunit hindi. Lumilitaw lamang ito, hindi opisyal, sa ilalim ng iba't ibang mga pangalan, sa iba't ibang mga pagpapatupad ng C library. Kaya ang isang case-insensitive na paghahambing ay hindi rin isang opisyal na bahagi ng opisyal na C library. Geeze. Parang napakalaking pagkukulang. Sa ilalim ng VS, ito ay _stricmp() o stricmp(), sa ilalim ng CodeWarrior para sa Mac ito ay stricmp() o strcasecmp(), at sa ilalim ng OS X 10.4/Xcode ito ay strcasecmp().

Kung iisipin, ang nangungunang underscore ay dapat na nagbigay sa akin ng pahiwatig.

Sa palagay ko kung nais mong sumunod sa pamantayan ng C kailangan mong ipatupad ang iyong sarili gamit ang tolower() (o toupper()) sa isang loop.

Tingnan natin ang isang unang pass ay maaaring (Ito ay nasa tuktok ng aking ulo, HINDI nasubok na code):
Code: |_+_|
Anyway, muli, paumanhin para sa masamang payo. Sa palagay ko ay hindi pa ako nakakagawa ng maraming C/C++ coding sa Mac OS X kung saan nais kong iwasan ang OS API (CFString, atbp.) mula noong mga araw ng CodeWarrior... T

matunaw

Orihinal na poster
Disyembre 4, 2006
Katy, Texas
  • Hun 11, 2007
Ahhhha. May katuturan. Salamat Wittegijt & iSee. Binabasa ko ang aking 'Encyclopedia C' (Sybex, 1991) at lahat (o marami, hindi bababa sa) ang hindi karaniwang mga keyword ng Microsoft ay lahat ay may salungguhit para sa unang karakter din. Dapat may tip sa akin.

OK, ngayon na strcasecmp() . Ang cppreference.com web site na ginagamit ko ay mukhang karaniwang C/C++ lang. Nag-google ako para sa isang partikular na sangguniang site ng Mac OS X XCode at wala akong nakitang isa. Ano ang magandang Mac OS X C++ reference website? O, mayroon bang C++ na sanggunian na nakapaloob sa tulong ng XCode sa isang lugar at hindi ko pa ito nahanap? O, kapag nabigo ang lahat ng iyon, mayroon bang isa sa Apple Development Center na napalampas ko rin?

Kasing laki ng XCode diskimages na dina-download at nai-install ko kapag na-prompt, tiyak na mayroong isang sanggunian ng wika doon - Ibig kong sabihin, ang mga bagay na Java na na-download ko sa simula ay MALAKI.

Todd

Krevnik

Setyembre 8, 2003
  • Hun 11, 2007
sabi ni toddburch: OK, ngayon na strcasecmp() . Ang cppreference.com web site na ginagamit ko ay mukhang karaniwang C/C++ lang. Nag-google ako para sa isang partikular na sangguniang site ng Mac OS X XCode at wala akong nakitang isa. Ano ang magandang Mac OS X C++ reference website? O, mayroon bang C++ na sanggunian na nakapaloob sa tulong ng XCode sa isang lugar at hindi ko pa ito nahanap? O, kapag nabigo ang lahat ng iyon, mayroon bang isa sa Apple Development Center na napalampas ko rin?

Ito ay naroroon, ngunit sa palagay ko ay hindi ito napupunta sa mga pag-andar ng C na nasa layer ng POSIX, lahat lamang ng mga karagdagan ng Apple sa POSIX. Maaari mong gamitin ang terminal para ma-access ang mga man page sa ilan sa mga function na ito. Dadalhin ka ng 'man strcasecmp' sa page na pinag-uusapan ang function na iyon at ilarawan kung paano ito gamitin.

nakita ko

Oktubre 25, 2004
  • Hun 11, 2007
Paikot-ikot sa Xcode, nakakita ako ng link sa pahinang ito:

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

na isang talaan ng mga nilalaman para sa lahat ng nasa OS X man page, kasama ang mga function ng C library.

Ang Xcode reference library ay nag-a-access ng mga man page bilang karagdagan sa iba pang mga mapagkukunan, kaya ang lahat ng ito ay magagamit sa pamamagitan ng Xcode (ginagamit ko ang 'Hanapin ang Napiling Teksto sa API Reference' sa lahat ng oras).

Mukhang nasa seksyon 3 ang mga function ng C. Mukhang ang dokumentasyon para sa bawat function ay naglalaman ng seksyong 'standard' o 'history' na nagbibigay ng ilang impormasyon sa kung anong pamantayan ang sinusunod ng function. Tila ang strcasecmp() ay inilipat mula sa 'string.h' patungo sa 'strings.h' para sa mga dahilan ng pagsunod. Hindi ako sigurado sa eksaktong paraan kung paano ito nakakasunod. Sa palagay ko, nangangahulugan ito na hindi dapat lumabas ang mga hindi karaniwang function sa string.h, kaya inilipat nila ito sa ibang header file. T

matunaw

Orihinal na poster
Disyembre 4, 2006
Katy, Texas
  • Hun 11, 2007
Iyan ay isang mahusay na pahina ng sanggunian! Akala ko nasa isang lugar ang impormasyong ganyan!