ฟอรั่ม

คลาสสตริง Mac C ++ - เปรียบเทียบตัวพิมพ์เล็กและตัวพิมพ์เล็ก?

NS

ละลาย

โปสเตอร์ต้นฉบับ
4 ธ.ค. 2549
Katy, เท็กซัส
  • 8 มิ.ย. 2550
ฉันได้ดูในการอ้างอิงออนไลน์ (cppreference.com) และหนังสือ C ++ ของฉันแล้ว แต่ไม่พบการเปรียบเทียบที่ไม่ละเอียดอ่อนของสตริง () แน่นอนว่ามี C-String ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เปรียบเทียบ แต่ฉันอยากจะใช้ C ++ เปรียบเทียบถ้ามี

(นอกจากนี้ ตอนนี้ฉันอยู่ในภารกิจตามหามัน...)

ขอบคุณ Todd NS

ละลาย

โปสเตอร์ต้นฉบับ
4 ธ.ค. 2549


Katy, เท็กซัส
  • 8 มิ.ย. 2550
ฉันเดาว่าฉันสามารถใช้บิตเซ็ต OR กับสตริงที่ยาวกว่าที่ฉันต้องการของช่องว่างทั้งหมด (X'20') แล้วทดสอบเพื่อเปรียบเทียบตัวพิมพ์เล็ก ...

เข้าใจแล้ว

25 ต.ค. 2547
  • 8 มิ.ย. 2550
เกือบจะเกินความเชื่อ แต่ฉันไม่เชื่อว่าไลบรารี C ++ มาตรฐานจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

หากคุณไม่ต้องการหรือต้องกังวลเกี่ยวกับสถานที่ ให้ทำดังนี้
_stricmp( str1.c_str(), str2.c_str() )
เป็นวิธีแก้ปัญหาที่ง่ายที่สุด (ยังค่อนข้างมีประสิทธิภาพ)

สถานที่ทำให้สิ่งต่าง ๆ ซับซ้อนเล็กน้อย (จริงๆแล้วมันเป็นข้อบกพร่องของไลบรารีมาตรฐานที่ทำให้สิ่งนี้ซับซ้อนมาก)
ขอลองดูว่าฉันสามารถหาลิงก์สำหรับบางสิ่งที่เกี่ยวข้องกับสถานที่ได้หรือไม่...
นี่คือหนึ่ง: http://lafstern.org/matt/col2_new.pdf
ฉันไม่รู้ว่าเขารู้จริง ๆ หรือเปล่าว่าเขากำลังพูดถึงอะไร แต่ดูเหมือนว่าเขาจะรู้ เขาพูดถึงเรื่องนี้อยู่พักหนึ่งเพื่อให้คุณเข้าใจปัญหาได้ แต่คุณสามารถข้ามไปที่ด้านล่างแล้วดูบล็อกโค้ดสุดท้ายเพื่อหาวิธีแก้ปัญหาที่ดีที่สุด NS

ละลาย

โปสเตอร์ต้นฉบับ
4 ธ.ค. 2549
Katy, เท็กซัส
  • 9 มิ.ย. 2550
ขอบคุณ iSee ใช่ เขาน่าจะพูดถูก อย่างไรก็ตาม เพื่อจุดประสงค์ของฉัน ฉันจะทำงานกับโค้ดอักขระ ASCII 7 บิต และฉันคิดว่าโค้ดก้อนนี้จะดีพอ

ขอบคุณสำหรับการยืนยัน ดีใจที่เห็นฉันไม่พลาด

ทอดด์

รหัส: |_+_| NS

ละลาย

โปสเตอร์ต้นฉบับ
4 ธ.ค. 2549
Katy, เท็กซัส
  • 10 มิ.ย. 2550
iSee กล่าวว่า: หากคุณไม่ต้องการหรือต้องกังวลเกี่ยวกับสถานที่ ให้ทำดังนี้:
_stricmp( str1.c_str(), str2.c_str() )
เป็นวิธีแก้ปัญหาที่ง่ายที่สุด (ยังค่อนข้างมีประสิทธิภาพ)

ตกลง ฉันยอมแพ้ ได้มาจากไหน _stricmp ?

ทอดด์ ใน

wittegijt

18 ก.พ. 2550
ไอนด์โฮเฟน
  • 11 มิ.ย. 2550
toddburch กล่าวว่า: ตกลงฉันยอมแพ้ ได้มาจากไหน _stricmp ?

ทอดด์

มันเป็นเรื่องของ Windows ไลบรารี Unix ใช้ strcasecmp ซึ่งอยู่ในไฟล์.

วิทเทกิจท์

เข้าใจแล้ว

25 ต.ค. 2547
  • 11 มิ.ย. 2550
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... NS

ละลาย

โปสเตอร์ต้นฉบับ
4 ธ.ค. 2549
Katy, เท็กซัส
  • 11 มิ.ย. 2550
อ่าฮะ มีเหตุผล. ขอบคุณ Wittegijt & iSee ฉันได้อ่าน 'สารานุกรม C' ของฉัน (Sybex, 1991) และทั้งหมด (หรืออย่างน้อย อย่างน้อย) คำหลักที่ไม่ได้มาตรฐานโดย Microsoft ล้วนมีขีดล่างสำหรับอักขระตัวแรกเช่นกัน ควรจะได้ทิปฉันออก

ตกลง ตอนนี้เพื่อ strcasecmp() . เว็บไซต์ cppreference.com ที่ฉันใช้มีลักษณะเป็น C/C++ มาตรฐานเท่านั้น ฉันได้ googled สำหรับไซต์อ้างอิงเฉพาะของ Mac OS X XCode และไม่พบ เว็บไซต์อ้างอิง Mac OS X C++ ที่ดีคืออะไร หรือมีการอ้างอิง C ++ ในตัว XCode ช่วยเหลือที่ไหนสักแห่งและฉันไม่พบมัน หรือล้มเหลวทั้งหมด มีหนึ่งใน Apple Development Center ที่ฉันพลาดไปหรือเปล่า

ขนาดดิสก์อิมเมจ XCode ที่ฉันดาวน์โหลดและติดตั้งเมื่อได้รับแจ้ง แน่นอนว่ามีคนอ้างอิงภาษาอยู่ที่นั่น - ฉันหมายถึงสิ่งที่ Java ที่ฉันดาวน์โหลดในตอนแรกมีขนาดใหญ่มาก

ทอดด์

เครฟนิก

8 ก.ย. 2546
  • 11 มิ.ย. 2550
toddburch กล่าวว่า: ตกลงตอนนี้เพื่อ strcasecmp() . เว็บไซต์ cppreference.com ที่ฉันใช้มีลักษณะเป็น C/C++ มาตรฐานเท่านั้น ฉันได้ googled สำหรับไซต์อ้างอิงเฉพาะของ Mac OS X XCode และไม่พบ เว็บไซต์อ้างอิง Mac OS X C++ ที่ดีคืออะไร หรือมีการอ้างอิง C ++ ในตัว XCode ช่วยเหลือที่ไหนสักแห่งและฉันไม่พบมัน หรือล้มเหลวทั้งหมด มีหนึ่งใน Apple Development Center ที่ฉันพลาดไปหรือเปล่า

มันอยู่ที่นั่น แต่ฉันไม่คิดว่ามันจะผ่านฟังก์ชัน C ที่อยู่ในเลเยอร์ POSIX เป็นเพียงส่วนเพิ่มเติมของ Apple ทั้งหมดที่เพิ่มเข้ามาใน POSIX คุณสามารถใช้เทอร์มินัลเพื่อเข้าถึงหน้าคนในฟังก์ชันบางอย่างได้ 'man strcasecmp' จะพาคุณไปที่หน้าที่พูดถึงฟังก์ชันนั้นและอธิบายวิธีใช้งาน

เข้าใจแล้ว

25 ต.ค. 2547
  • 11 มิ.ย. 2550
ใน Xcode ฉันพบลิงก์ไปยังหน้านี้:

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

ซึ่งเป็นสารบัญสำหรับทุกอย่างในหน้าคู่มือ OS X รวมถึงฟังก์ชันไลบรารี C

ไลบรารีอ้างอิง Xcode เข้าถึงหน้าคนนอกเหนือจากทรัพยากรอื่น ๆ ดังนั้นสิ่งเหล่านี้จึงพร้อมใช้งานผ่าน Xcode (ฉันใช้ 'ค้นหาข้อความที่เลือกในการอ้างอิง API' ตลอดเวลา)

ดูเหมือนว่าฟังก์ชัน C จะอยู่ในส่วนที่ 3 ดูเหมือนว่าเอกสารประกอบสำหรับแต่ละฟังก์ชันมีส่วน 'มาตรฐาน' หรือ 'ประวัติ' ที่ให้ข้อมูลบางอย่างเกี่ยวกับมาตรฐานของฟังก์ชันที่สอดคล้องกับ เห็นได้ชัดว่า strcasecmp() ถูกย้ายจาก 'string.h' เป็น 'strings.h' เนื่องจากเหตุผลในการปฏิบัติตามข้อกำหนด ฉันไม่แน่ใจว่าวิธีใดที่ทำให้เป็นไปตามข้อกำหนด ฉันเดาว่ามันหมายความว่าฟังก์ชันที่ไม่ได้มาตรฐานไม่ควรปรากฏใน string.h ดังนั้นพวกเขาจึงย้ายไปยังไฟล์ส่วนหัวอื่น NS

ละลาย

โปสเตอร์ต้นฉบับ
4 ธ.ค. 2549
Katy, เท็กซัส
  • 11 มิ.ย. 2550
นั่นเป็นหน้าอ้างอิงที่ยอดเยี่ยม! ฉันคิดว่าข้อมูลแบบนั้นอยู่ในนั้นที่ไหนสักแห่ง!