פורומים

מחלקה מחרוזת של Mac C++ - השוואה ללא רגישות לרישיות?

ט

לְהַתִיך

פוסטר מקורי
4 בדצמבר 2006
קייטי, טקסס
  • 8 ביוני 2007
חיפשתי בהפניה מקוונת (cppreference.com) ובספר C++ שלי, אבל אני לא מוצא compare() לא רגיש למחרוזת. אין ספק שיש השוואות חסרות רגישות לאותיות C-String, אבל אני מעדיף להשתמש בהשוואה C++ אם יש כזו.

(בנוסף, עכשיו אני במשימה למצוא אותו...)

תודה, טוד ט

לְהַתִיך

פוסטר מקורי
4 בדצמבר 2006


קייטי, טקסס
  • 8 ביוני 2007
אני מניח שאוכל להשתמש ב-Bitset OR עם מחרוזת ידועה ארוכה מהנדרש של כל החסר (X'20') ואז לבדוק לאותיות קטנות להשוות...

אני רואה

25 באוקטובר 2004
  • 8 ביוני 2007
זה כמעט מעבר לאמונה, אבל אני לא מאמין שלספריית C++ הסטנדרטית יש חוסר רגישות לאותיות גדולות.

אם אינך רוצה או צריך לדאוג לגבי מקומות, אז:
_stricmp( str1.c_str(), str2.c_str() )
האם הפתרון הפשוט ביותר (גם די יעיל).

מקומיים מסבכים את הדברים לא מעט (טוב, זה באמת החסרונות של הספרייה הסטנדרטית שהופכים את זה לכל כך מסובך).
בוא תראה אם ​​אני יכול למצוא קישור למשהו שעוסק במקומות...
הנה אחד: http://lafstern.org/matt/col2_new.pdf
אני לא יודע אם הוא באמת יודע על מה הוא מדבר, אבל זה נשמע שהוא יודע. הוא ממשיך זמן מה על זה כדי שתוכל להבין את הבעיה, אבל אתה יכול לדלג לתחתית ולבדוק את בלוק הקוד האחרון לפתרון הטוב ביותר שלו. ט

לְהַתִיך

פוסטר מקורי
4 בדצמבר 2006
קייטי, טקסס
  • 9 ביוני, 2007
תודה iSee. כן, הוא כנראה צודק. עם זאת, למטרות שלי, אני אעבוד עם קודי תווים של 7 סיביות ASCII, ואני חושב שחלק הקוד הזה יהיה מספיק טוב.

תודה על האישור - שמח לראות שלא סתם היה חסר לי.

טוד

קוד: |_+_| ט

לְהַתִיך

פוסטר מקורי
4 בדצמבר 2006
קייטי, טקסס
  • 10 ביוני, 2007
iSee אמר: אם אתה לא רוצה או צריך לדאוג לגבי מקומות, אז:
_stricmp( str1.c_str(), str2.c_str() )
האם הפתרון הפשוט ביותר (גם די יעיל).

בסדר אני מרים ידיים. מאיפה הגעת _stricmp ?

טוד IN

wittegijt

18 בפברואר 2007
איינדהובן
  • 11 ביוני, 2007
טודבורץ' אמר: בסדר, אני מוותר. מאיפה הגעת _stricmp ?

טוד

זה עניין של ווינדוס. ספריות יוניקס משתמשות ב-strcasecmp, זה ב-.

ויטגייט.

אני רואה

25 באוקטובר 2004
  • 11 ביוני, 2007
טודבורץ' אמר: בסדר, אני מוותר. מאיפה הגעת _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 שבו רציתי להימנע מ-API של מערכת ההפעלה (CFString וכו') מאז ימי CodeWarrior... ט

לְהַתִיך

פוסטר מקורי
4 בדצמבר 2006
קייטי, טקסס
  • 11 ביוני, 2007
אהההה. הגיוני. תודה Wittegijt & iSee. קראתי את 'אנציקלופדיה C' שלי (Sybex, 1991) ולכל (או הרבה, לפחות) מילות המפתח הלא סטנדרטיות של מיקרוסופט יש גם קו תחתון עבור התו הראשון. היה צריך לתת לי טיפ.

בסדר, עכשיו strcasecmp() . אתר האינטרנט cppreference.com בו השתמשתי נראה רק C/C++ סטנדרטי. חיפשתי בגוגל אתר עזר ספציפי של Mac OS X XCode ולא מצאתי. מהו אתר עזר טוב של Mac OS X C++? או, האם יש הפניה ל-C++ המובנית בעזרה של XCode איפשהו ופשוט לא מצאתי אותה? או, אם נכשל בכל זה, האם יש אחד במרכז הפיתוח של אפל שגם אני פספסתי?

עד כמה שתמונות הדיסק של XCode אני מוריד ומתקין כשאני מתבקש, בטח יש שם הפניה לשפה - כלומר, חומרי הג'אווה שהורדתי בהתחלה היו ענקיים.

טוד

קרבניק

8 בספטמבר 2003
  • 11 ביוני, 2007
toddburch אמר: בסדר, עכשיו strcasecmp() . אתר האינטרנט cppreference.com בו השתמשתי נראה רק C/C++ סטנדרטי. חיפשתי בגוגל אתר עזר ספציפי של Mac OS X XCode ולא מצאתי. מהו אתר עזר טוב של Mac OS X C++? או, האם יש הפניה ל-C++ המובנית בעזרה של XCode איפשהו ופשוט לא מצאתי אותה? או, אם נכשל בכל זה, האם יש אחד במרכז הפיתוח של אפל שגם אני פספסתי?

זה שם, אבל אני לא חושב שזה עובר על פונקציות C שנמצאות בשכבת POSIX, רק על כל התוספות של אפל ל-POSIX. אתה יכול להשתמש במסוף כדי לגשת לדפי אדם בחלק מהפונקציות הללו. '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, אז הם העבירו אותו לקובץ כותרת אחר. ט

לְהַתִיך

פוסטר מקורי
4 בדצמבר 2006
קייטי, טקסס
  • 11 ביוני, 2007
זה דף עיון נהדר! חשבתי שמידע כזה נמצא שם איפשהו!