Форуми

Mac C++ низов клас - сравнение, независимо от главните букви?

T

разтопява се

Оригинален плакат
4 декември 2006 г
Кейти, Тексас
  • 8 юни 2007 г
Погледнах в онлайн справочник (cppreference.com) и моята книга на C++, но не мога да намеря compare(, нечувствителен към низове). Със сигурност има сравнения, нечувствителни към C-String, но бих предпочел да използвам сравнение на C++, ако има такова.

(Освен това, сега съм на мисия да го намеря...)

Благодаря, Тод T

разтопява се

Оригинален плакат
4 декември 2006 г


Кейти, Тексас
  • 8 юни 2007 г
Предполагам, че мога да използвам набор от битове ИЛИ с известен по-дълъг от необходимия низ от всички празни места (X'20') и след това да тествам за сравнение с малки букви...

Виждам

25 октомври 2004 г
  • 8 юни 2007 г
Почти не е за вярване, но не вярвам, че стандартната библиотека на C++ има безразличие към главни и малки букви.

Ако не искате или трябва да се притеснявате за локали, тогава:
_stricmp( str1.c_str(), str2.c_str() )
Това е най-простото решение (също доста ефективно).

Локалите доста усложняват нещата (е, всъщност недостатъците на стандартната библиотека правят това толкова сложно).
Нека видя дали мога да намеря връзка за нещо, което се занимава с локали...
ето едно: http://lafstern.org/matt/col2_new.pdf
Не знам дали наистина знае за какво говори, но звучи така, сякаш го знае. Той продължава известно време за това, за да можете да разберете проблема, но можете да прескочите до края и да разгледате последния кодов блок за най-доброто му решение. T

разтопява се

Оригинален плакат
4 декември 2006 г
Кейти, Тексас
  • 9 юни 2007 г
Благодаря iSee. Да, вероятно е прав. Въпреки това, за моите цели, ще работя със 7-битови ASCII символни кодове и мисля, че тази част от кода ще бъде достатъчно добра.

Благодаря за потвърждението - радвам се да видя, че не просто го пропуснах.

Тод

Код: |_+_| T

разтопява се

Оригинален плакат
4 декември 2006 г
Кейти, Тексас
  • 10 юни 2007 г
iSee каза: Ако не искате или трябва да се притеснявате за локали, тогава:
_stricmp( str1.c_str(), str2.c_str() )
Това е най-простото решение (също доста ефективно).

Добре, отказвам се. Къде измисли _stricmp ?

Тод IN

wittegijt

18 февруари 2007 г
Айндховен
  • 11 юни 2007 г
toddburch каза: Добре, отказвам се. Къде измисли _stricmp ?

Тод

Това е нещо за Windows. Unix библиотеките използват strcasecmp, той е в .

Wittegijt.

Виждам

25 октомври 2004 г
  • 11 юни 2007 г
toddburch каза: Добре, отказвам се. Къде измисли _stricmp ?

Тод

Добре, съжалявам, че го изхвърлих.

Мислех, че е част от стандартната C библиотека, но не е. Просто се появява, неофициално, под различни имена, в различни реализации на библиотеката C. Така че сравнението, независимо от главните букви, също не е официална част от официалната C библиотека. Господи! Изглежда като такъв огромен пропуск. Под VS това е _stricmp() или stricmp(), под CodeWarrior за Mac е stricmp() или strcasecmp(), а под OS X 10.4/Xcode е strcasecmp().

Като се замисля, водещото долно черти трябваше да ми даде намек.

Предполагам, че ако искате да се съобразите със стандарта C, трябва да внедрите свой собствен, като използвате tolower() (или toupper()) в цикъл.

Нека видим, че първият пропуск може да бъде (Това не е на главата ми, НЕ тестван код):
Код: |_+_|
Както и да е, пак се извинявам за лошия съвет. Предполагам, че не съм правил много кодиране на C/C++ в Mac OS X, където исках да избегна OS API (CFString и т.н.) от дните на CodeWarrior... T

разтопява се

Оригинален плакат
4 декември 2006 г
Кейти, Тексас
  • 11 юни 2007 г
Ааааа. Има смисъл. Благодаря Wittegijt & iSee. Четох моята „Енциклопедия C“ (Sybex, 1991) и всички (или поне много) нестандартни ключови думи на Microsoft също имат долно черта за първия знак. Трябваше да ме предупреди.

Добре, сега да strcasecmp() . Уебсайтът cppreference.com, който използвах, изглежда е само стандартен C/C++. Търсих в Google референтен сайт за Mac OS X XCode и не намерих такъв. Какъв е добър референтен уебсайт за Mac OS X C++? Или има ли някъде справка за C++, вградена в помощта на XCode и просто не съм я намерил? Или, ако всичко това се провали, има ли такъв в Центъра за разработка на Apple, който също съм пропуснал?

Колкото и големи да са дисковите изображения на XCode, които изтеглям и инсталирам, когато бъдете подканени, със сигурност има някой препратка към езика - искам да кажа, Java нещата, които изтеглих първоначално, бяха ОГРОМНИ.

Тод

Кревник

8 септември 2003 г
  • 11 юни 2007 г
toddburch каза: Добре, сега да strcasecmp() . Уебсайтът cppreference.com, който използвах, изглежда е само стандартен C/C++. Търсих в Google референтен сайт за Mac OS X XCode и не намерих такъв. Какъв е добър референтен уебсайт за Mac OS X C++? Или има ли някъде справка за C++, вградена в помощта на XCode и просто не съм я намерил? Или, ако всичко това се провали, има ли такъв в Центъра за разработка на Apple, който също съм пропуснал?

Има го, но не мисля, че преминава през функциите C, които са в слоя POSIX, а просто всички допълнения на Apple към POSIX. Можете да използвате терминала за достъп до man страници на някои от тези функции. 'man strcasecmp' ще ви отведе точно до страницата, в която се говори за тази функция и ще опише как да я използвате.

Виждам

25 октомври 2004 г
  • 11 юни 2007 г
Ровейки се в Xcode, намерих връзка към тази страница:

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

което е таблица на съдържанието за всичко в страниците с man на OS X, включително функциите на библиотеката C.

Референтната библиотека на Xcode има достъп до страниците на ръководството в допълнение към други ресурси, така че всички те са достъпни чрез Xcode (използвам „Намиране на избран текст в API Reference“ през цялото време).

Изглежда, че функциите на C са в раздел 3. Изглежда, че документацията за всяка функция съдържа раздел „стандарт“ или „история“, който дава информация за това на какъв стандарт отговаря функцията. Очевидно strcasecmp() е преместен от 'string.h' в 'strings.h' поради съображения за съответствие. Не съм сигурен по какъв точно начин го прави съвместим. Предполагам, че това означава, че нестандартните функции не трябва да се появяват в string.h, така че са го преместили в друг заглавен файл. T

разтопява се

Оригинален плакат
4 декември 2006 г
Кейти, Тексас
  • 11 юни 2007 г
Това е страхотна справочна страница! Реших, че такава информация има някъде!