Fora

Mac C++ strengklasse - ufølsom sammenligning?

T

nedsmeltning

Original plakat
4. december 2006
Katy, Texas
  • 8. juni 2007
Jeg har kigget i en online reference (cppreference.com) og min C++ bog, men jeg kan ikke finde en streng ufølsom compare(). Der er bestemt C-String ufølsomme sammenligninger, men jeg vil hellere bruge en C++ sammenligning, hvis der er en.

(Plus, nu er jeg på en mission for at finde det...)

Tak, Todd T

nedsmeltning

Original plakat
4. december 2006


Katy, Texas
  • 8. juni 2007
Jeg gætter på, at jeg kunne bruge et bitsæt OR med en kendt streng, der er længere end jeg havde brug for, af alle blanke (X'20') og derefter teste for en sammenligning med små bogstaver...

Jeg ser

25. oktober 2004
  • 8. juni 2007
Det er næsten umuligt at tro, men jeg tror ikke på, at standard C++-biblioteket har en ufølsomhed over for store og små bogstaver.

Hvis du ikke vil eller har brug for at bekymre dig om lokaliteter, så:
_stricmp( str1.c_str(), str2.c_str() )
Er den enkleste løsning (også ret effektiv).

Lokaliteter komplicerer tingene en del (godt, det er virkelig manglerne i standardbiblioteket, der gør det så kompliceret).
Lad mig se om jeg kan finde et link til noget der omhandler lokaliteter...
her er en: http://lafstern.org/matt/col2_new.pdf
Jeg ved ikke om han rigtig ved hvad han taler om, men det lyder som om han gør det. Han fortsætter et stykke tid om dette, så du kan forstå problemet, men du kan springe til bunden og tjekke den sidste kodeblok for hans bedste løsning. T

nedsmeltning

Original plakat
4. december 2006
Katy, Texas
  • 9. juni 2007
Tak iSee. Ja, han har sikkert ret. Til mit formål vil jeg dog arbejde med 7-bit ASCII-tegnkoder, og jeg tror, ​​at denne kodeklump vil være god nok.

Tak for bekræftelsen - glad for at se, at jeg ikke bare manglede det.

Todd

Kode: |_+_| T

nedsmeltning

Original plakat
4. december 2006
Katy, Texas
  • 10. juni 2007
iSee sagde: Hvis du ikke vil eller behøver at bekymre dig om lokaliteter, så:
_stricmp( str1.c_str(), str2.c_str() )
Er den enkleste løsning (også ret effektiv).

OK, jeg giver op. Hvor fandt du på _stricmp ?

Todd I

wittegijt

18. februar 2007
Eindhoven
  • 11. juni 2007
toddburch sagde: OK, jeg giver op. Hvor fandt du på _stricmp ?

Todd

Det er en Windows-ting. Unix-biblioteker bruger strcasecmp, det er i .

Wittegijt.

Jeg ser

25. oktober 2004
  • 11. juni 2007
toddburch sagde: OK, jeg giver op. Hvor fandt du på _stricmp ?

Todd

Okay, undskyld jeg smider det derud.

Jeg troede, det var en del af standard C-biblioteket, men det er det ikke. Det vises bare, uofficielt, under forskellige navne i forskellige implementeringer af C-biblioteket. Så en sammenligning uden store og små bogstaver er heller ikke en officiel del af det officielle C-bibliotek. Jøss. Det virker som sådan en kæmpe udeladelse. Under VS er det _stricmp() eller stricmp(), under CodeWarrior til Mac er det stricmp() eller strcasecmp(), og under OS X 10.4/Xcode er det strcasecmp().

Når jeg tænker på det, burde den førende understregning have givet mig hintet.

Jeg gætter på, at hvis du vil overholde C-standarden, skal du implementere din egen ved at bruge tolower() (eller toupper()) i en loop.

Lad os se, at et første pass kan være (Dette er ude af mit hoved, IKKE testet kode):
Kode: |_+_|
I hvert fald igen, undskyld det dårlige råd. Jeg har vel ikke rigtig lavet en masse C/C++-kodning på Mac OS X, hvor jeg ville undgå OS API (CFString osv.) siden CodeWarrior-dagene... T

nedsmeltning

Original plakat
4. december 2006
Katy, Texas
  • 11. juni 2007
Ahhhha. Giver mening. Tak Wittegijt & iSee. Jeg har læst mit 'Encyclopedia C' (Sybex, 1991), og alle (eller mange af, i det mindste) de ikke-standardiserede søgeord fra Microsoft har også alle en understregning for det første tegn. Skulle have tippet mig.

OK, nu til strcasecmp() . Webstedet cppreference.com, jeg har brugt, ser kun ud til at være standard C/C++. Jeg har googlet efter en Mac OS X XCode-specifik referenceside og har ikke fundet et. Hvad er et godt Mac OS X C++ referencewebsted? Eller er der en C++ reference indbygget i XCode hjælp et eller andet sted, og jeg har bare ikke fundet den? Eller, hvis alt dette ikke er tilfældet, er der en i Apple Development Center, som jeg også har savnet?

Så store som XCode-diskbillederne er, som jeg downloader og installerer, når jeg bliver bedt om det, er der helt sikkert en sprogreference derinde - jeg mener, de Java-ting, jeg downloadede i starten, var ENORME.

Todd

Krevnik

8. september 2003
  • 11. juni 2007
toddburch sagde: OK, nu til strcasecmp() . Webstedet cppreference.com, jeg har brugt, ser kun ud til at være standard C/C++. Jeg har googlet efter en Mac OS X XCode-specifik referenceside og har ikke fundet et. Hvad er et godt Mac OS X C++ referencewebsted? Eller er der en C++ reference indbygget i XCode hjælp et eller andet sted, og jeg har bare ikke fundet den? Eller, hvis alt dette ikke er tilfældet, er der en i Apple Development Center, som jeg også har savnet?

Det er der, men jeg tror ikke, det går ud over de C-funktioner, der er i POSIX-laget, kun alle Apples tilføjelser til POSIX. Du kan bruge terminalen til at få adgang til man-sider på nogle af disse funktioner. 'man strcasecmp' fører dig direkte til siden, der taler om den funktion, og beskriver, hvordan du bruger den.

Jeg ser

25. oktober 2004
  • 11. juni 2007
Da jeg kiggede rundt i Xcode, fandt jeg et link til denne side:

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

som er en indholdsfortegnelse for alt på OS X-man-siderne, inklusive C-biblioteksfunktionerne.

Xcode-referencebiblioteket får adgang til man-sider ud over andre ressourcer, så disse er alle tilgængelige via Xcode (jeg bruger 'Find valgt tekst i API-reference' hele tiden).

Det ser ud til, at C-funktionerne er i sektion 3. Det ser ud til, at dokumentationen for hver funktion indeholder en 'standard' eller 'historik' sektion, der giver noget info om, hvilken standard funktionen overholder. Tilsyneladende blev strcasecmp() flyttet fra 'string.h' til 'strings.h' af compliance-årsager. Jeg er ikke sikker på, præcis på hvilken måde det gør det kompatibelt. Jeg gætter på, at det betyder, at ikke-standardfunktioner ikke skal vises i string.h, så de flyttede den til en anden header-fil. T

nedsmeltning

Original plakat
4. december 2006
Katy, Texas
  • 11. juni 2007
Det er en god referenceside! Jeg troede, at den slags oplysninger var derinde et sted!