Foorumit

Mac C++ -merkkijonoluokka – eikö kirjainkokoa vertailla?

T

sulattaa

Alkuperäinen juliste
4. joulukuuta 2006
Katy, Texas
  • 8. kesäkuuta 2007
Olen etsinyt online-viittausta (cppreference.com) ja C++-kirjaani, mutta en löydä merkkijonoa, joka ei olisi herkkä vertailu(). On varmasti olemassa C-String-vertailuja, joissa kirjainkoolla ei ole merkitystä, mutta käytän mieluummin C++-vertailua, jos sellainen on.

(Lisäksi, nyt minulla on tehtävä löytää se...)

Kiitos, Todd T

sulattaa

Alkuperäinen juliste
4. joulukuuta 2006


Katy, Texas
  • 8. kesäkuuta 2007
Luulen, että voisin käyttää bittijoukkoa TAI jossa on tiedossa pidempi kuin tarvitsin kaikkien aihioiden merkkijono (X'20') ja sitten testata pienten kirjainten vertailua...

näen

25. lokakuuta 2004
  • 8. kesäkuuta 2007
Se on melkein uskomatonta, mutta en usko, että tavallisessa C++-kirjastossa kirjainkoolla ei ole merkitystä.

Jos et halua tai tarvitse huolehtia kielialueista, toimi seuraavasti:
_stricmp( str1.c_str(), str2.c_str() )
On yksinkertaisin ratkaisu (myös varsin tehokas).

Kieliasetukset monimutkaistavat asioita melko vähän (no, oikeastaan ​​​​standardikirjaston puutteet tekevät tästä niin monimutkaisen).
Katsotaanpa, löydänkö linkin johonkin, joka käsittelee alueita...
tässä yksi: http://lafstern.org/matt/col2_new.pdf
En tiedä tietääkö hän todella mistä puhuu, mutta kuulostaa siltä, ​​että hän tietää. Hän jatkaa tästä jonkin aikaa, jotta voit ymmärtää ongelman, mutta voit hypätä alareunaan ja tarkistaa viimeisestä koodilohkosta hänen parhaan ratkaisunsa. T

sulattaa

Alkuperäinen juliste
4. joulukuuta 2006
Katy, Texas
  • 9. kesäkuuta 2007
Kiitos iSee. Joo, hän on varmaan oikeassa. Käytän kuitenkin tarkoituksiini 7-bittisiä ASCII-merkkikoodeja, ja mielestäni tämä koodipala on tarpeeksi hyvä.

Kiitos vahvistuksesta - ilo nähdä, etten vain jäänyt kaipaamaan sitä.

Todd

Koodi: |_+_| T

sulattaa

Alkuperäinen juliste
4. joulukuuta 2006
Katy, Texas
  • 10. kesäkuuta 2007
iSee sanoi: Jos et halua tai tarvitse huolehtia kielialueista, niin:
_stricmp( str1.c_str(), str2.c_str() )
On yksinkertaisin ratkaisu (myös varsin tehokas).

OK, luovutan. Mistä keksit _stricmp ?

Todd SISÄÄN

wittegijt

18. helmikuuta 2007
Eindhoven
  • 11. kesäkuuta 2007
toddburch sanoi: OK, luovutan. Mistä keksit _stricmp ?

Todd

Se on Windows-juttu. Unix-kirjastot käyttävät strcasecmp, se on .

Wittegijt.

näen

25. lokakuuta 2004
  • 11. kesäkuuta 2007
toddburch sanoi: OK, luovutan. Mistä keksit _stricmp ?

Todd

Okei, anteeksi, että heitin sen tänne.

Luulin sen olevan osa tavallista C-kirjastoa, mutta se ei ole. Se vain esiintyy epävirallisesti eri nimillä C-kirjaston eri toteutuksissa. Joten kirjainkoolla välitön vertailu ei ole myöskään virallinen osa virallista C-kirjastoa. Jestas. Vaikuttaa niin suurelta laiminlyönniltä. VS:ssä se on _stricmp() tai stricmp(), CodeWarrior for Macissa se on stricmp() tai strcasecmp(), ja OS X 10.4/Xcodessa se on strcasecmp().

Kun ajattelen sitä, johtavan alaviivan olisi pitänyt antaa minulle vihje.

Oletan, että jos haluat noudattaa C-standardia, sinun täytyy toteuttaa omasi käyttämällä silmukassa tolower()- (tai toupper()).

Katsotaanpa, että ensimmäinen läpimeno voi olla (tämä on päähäni, EI testattu koodi):
Koodi: |_+_|
Joka tapauksessa, pahoittelut huonoista neuvoista. En ole varmaankaan tehnyt paljon C/C++-koodausta Mac OS X:ssä, jossa olisin halunnut välttää OS API:ta (CFString jne.) CodeWarrior-ajoista lähtien... T

sulattaa

Alkuperäinen juliste
4. joulukuuta 2006
Katy, Texas
  • 11. kesäkuuta 2007
Ahhhha. Käydä järkeen. Kiitos Wittegijt & iSee. Olen lukenut Encyclopedia C:täni (Sybex, 1991), ja kaikissa (tai ainakin monissa) Microsoftin epästandardeissa avainsanoissa on myös alaviiva ensimmäisessä merkissä. Olisi pitänyt vihjata minua.

OK, nyt siihen strcasecmp() . Käyttämäni cppreference.com-verkkosivusto näyttää olevan vain tavallinen C/C++. Olen googlettanut Mac OS X XCode -kohtaista viitesivustoa, mutta en ole löytänyt sellaista. Mikä on hyvä Mac OS X C++ -viitesivusto? Vai onko jossain XCode-apussa sisäänrakennettu C++-viite, enkä vain ole löytänyt sitä? Tai muuten, onko Applen kehityskeskuksessa joku, jota minäkin olen missannut?

Niin suuria kuin XCode-levykuvat ovatkin, jotka lataan ja asensen pyydettäessä, siellä on varmasti joku kieliviittaus - tarkoitan, että alun perin lataamani Java-materiaali oli VALTAISTA.

Todd

Krevnik

8. syyskuuta 2003
  • 11. kesäkuuta 2007
toddburch sanoi: OK, nyt strcasecmp() . Käyttämäni cppreference.com-verkkosivusto näyttää olevan vain tavallinen C/C++. Olen googlettanut Mac OS X XCode -kohtaista viitesivustoa, mutta en ole löytänyt sellaista. Mikä on hyvä Mac OS X C++ -viitesivusto? Vai onko jossain XCode-apussa sisäänrakennettu C++-viite, enkä vain ole löytänyt sitä? Tai muuten, onko Applen kehityskeskuksessa joku, jota minäkin olen missannut?

Se on siellä, mutta en usko, että se ylittää POSIX-kerroksen C-toiminnot, vain kaikki Applen POSIX-lisäykset. Päätteen avulla voit käyttää joitakin näistä toiminnoista käsitteleviä man-sivuja. 'man strcasecmp' vie sinut suoraan sivulle, jossa puhutaan kyseisestä funktiosta ja kuvataan kuinka sitä käytetään.

näen

25. lokakuuta 2004
  • 11. kesäkuuta 2007
Xcodea selaillessani löysin linkin tälle sivulle:

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

joka on sisällysluettelo kaikelle OS X:n man-sivuille, mukaan lukien C-kirjastotoiminnot.

Xcode-viitekirjasto käyttää man-sivuja muiden resurssien lisäksi, joten nämä ovat kaikki saatavilla Xcoden kautta (käytän jatkuvasti 'Etsi valittua tekstiä API-viittauksessa').

Näyttää siltä, ​​​​että C-funktiot ovat osiossa 3. Näyttää siltä, ​​​​että kunkin funktion dokumentaatio sisältää 'standardi'- tai 'historia'-osion, joka antaa tietoja siitä, mitä standardia funktio on noudattanut. Ilmeisesti strcasecmp() siirrettiin kohdasta 'string.h' kohtaan 'strings.h' vaatimustenmukaisuussyistä. En ole varma, millä tavalla se tekee siitä yhteensopivan. Luulen, että se tarkoittaa, että epästandardien funktioiden ei pitäisi näkyä string.h:ssa, joten se siirrettiin toiseen otsikkotiedostoon. T

sulattaa

Alkuperäinen juliste
4. joulukuuta 2006
Katy, Texas
  • 11. kesäkuuta 2007
Tää on hieno referenssisivu! Arvasin, että tuollaista tietoa on jossain!