मंचों

मैक सी ++ स्ट्रिंग क्लास - केस असंवेदनशील तुलना?

टी

पिघल जाना

मूल पोस्टर
दिसंबर 4, 2006
कैटी, टेक्सास
  • जून 8, 2007
मैंने एक ऑनलाइन संदर्भ (cppreference.com) और मेरी सी ++ पुस्तक में देखा है, लेकिन मुझे एक स्ट्रिंग असंवेदनशील तुलना() नहीं मिल रही है। निश्चित रूप से सी-स्ट्रिंग केस असंवेदनशील तुलनाएं हैं, लेकिन यदि कोई है तो मैं एक सी ++ तुलना का उपयोग करूंगा।

(साथ ही, अब मैं इसे खोजने के मिशन पर हूं...)

धन्यवाद, टोड टी

पिघलना

मूल पोस्टर
दिसंबर 4, 2006


कैटी, टेक्सास
  • जून 8, 2007
मुझे लगता है कि मैं एक बिटसेट का उपयोग कर सकता हूं या सभी रिक्त स्थान (एक्स'20') की ज्ञात लंबी-से-आवश्यक स्ट्रिंग के साथ और फिर निचले मामले की तुलना के लिए परीक्षण कर सकता हूं ...

समझा

अक्टूबर 25, 2004
  • जून 8, 2007
यह लगभग विश्वास से परे है, लेकिन मुझे विश्वास नहीं है कि मानक सी ++ लाइब्रेरी में केस-असंवेदनशील है।

यदि आप स्थानों के बारे में चिंता नहीं करना चाहते हैं या नहीं करना चाहते हैं, तो:
_stricmp (str1.c_str (), str2.c_str ())
सबसे सरल उपाय है (काफी कुशल भी)।

लोकेशंस चीजों को थोड़ा जटिल करते हैं (ठीक है, यह वास्तव में मानक पुस्तकालय की कमियां हैं जो इसे इतना जटिल बनाती हैं)।
Lemme देखें कि क्या मुझे स्थानीय लोगों से संबंधित किसी चीज़ के लिए एक लिंक मिल सकता है ...
यहां एक है: http://lafstern.org/matt/col2_new.pdf
मुझे नहीं पता कि वह वास्तव में जानता है कि वह किस बारे में बात कर रहा है, लेकिन ऐसा लगता है जैसे वह करता है। वह इस बारे में कुछ समय के लिए चलता है ताकि आप इस मुद्दे को समझ सकें, लेकिन आप नीचे तक जा सकते हैं और उसके सर्वोत्तम समाधान के लिए अंतिम कोड ब्लॉक देख सकते हैं। टी

पिघलना

मूल पोस्टर
दिसंबर 4, 2006
कैटी, टेक्सास
  • जून 9, 2007
धन्यवाद आईसेई। हाँ, वह शायद सही है। हालांकि, मेरे उद्देश्यों के लिए, मैं 7-बिट ASCII वर्ण कोड के साथ काम करूँगा, और मुझे लगता है कि यह कोड खंड काफी अच्छा होगा।

पुष्टि के लिए धन्यवाद - यह देखकर खुशी हुई कि मैं इसे याद नहीं कर रहा था।

टोड

कोड: |_+_| टी

पिघलना

मूल पोस्टर
दिसंबर 4, 2006
कैटी, टेक्सास
  • जून 10, 2007
iSee ने कहा: यदि आप स्थानीय लोगों के बारे में चिंता नहीं करना चाहते हैं या नहीं करना चाहते हैं, तो:
_stricmp (str1.c_str (), str2.c_str ())
सबसे सरल उपाय है (काफी कुशल भी)।

ठीक है मैं हार मानता हूँ। आप कहां से आए? _stricmp ?

टोड में

विटेगीज्टो

फ़रवरी 18, 2007
आइंटहॉवन
  • जून 11, 2007
टॉडबर्च ने कहा: ठीक है, मैं हार मान लेता हूं। आप कहां से आए? _stricmp ?

टोड

यह विंडोज़ की बात है। यूनिक्स पुस्तकालय strcasecmp का उपयोग करते हैं, यह .

विटिगिज्ट।

समझा

अक्टूबर 25, 2004
  • जून 11, 2007
टॉडबर्च ने कहा: ठीक है, मैं हार मान लेता हूं। आप कहां से आए? _stricmp ?

टोड

ठीक है, इसे वहां फेंकने के लिए खेद है।

मैंने सोचा कि यह मानक सी पुस्तकालय का हिस्सा था, लेकिन ऐसा नहीं है। यह सी पुस्तकालय के विभिन्न कार्यान्वयन में, अनौपचारिक रूप से, विभिन्न नामों के तहत प्रकट होता है। तो केस-असंवेदनशील तुलना आधिकारिक सी लाइब्रेरी का आधिकारिक हिस्सा नहीं है। गीज़। ऐसा लगता है कि यह इतनी बड़ी चूक है। वीएस के तहत, यह _stricmp() या stricmp() है, मैक के लिए CodeWarrior के तहत यह stricmp() या strcasecmp() है, और OS X 10.4/Xcode के तहत यह strcasecmp() है।

इसके बारे में सोचने के लिए आओ, प्रमुख अंडरस्कोर को मुझे संकेत देना चाहिए था।

मुझे लगता है कि यदि आप सी मानक के अनुरूप होना चाहते हैं तो आपको लूप में tolower() (या toupper()) का उपयोग करके अपना खुद का कार्यान्वयन करना होगा।

आइए देखें कि पहला पास हो सकता है (यह मेरे सिर के ऊपर से है, परीक्षण नहीं किया गया कोड):
कोड: |_+_|
वैसे भी, फिर से, बुरी सलाह के लिए खेद है। मुझे लगता है कि मैंने वास्तव में मैक ओएस एक्स पर बहुत सी सी/सी ++ कोडिंग नहीं की है जहां मैं कोडवायर दिनों से ओएस एपीआई (सीएफस्ट्रिंग, इत्यादि) से बचना चाहता था ... टी

पिघलना

मूल पोस्टर
दिसंबर 4, 2006
कैटी, टेक्सास
  • जून 11, 2007
अह्ह्ह। समझ में आता है। धन्यवाद Wittegijt & iSee। मैं अपना 'एनसाइक्लोपीडिया सी' (साइबेक्स, 1991) पढ़ रहा हूं और माइक्रोसॉफ्ट के सभी गैर-मानक कीवर्ड (या कम से कम बहुत सारे) पहले अक्षर के लिए भी अंडरस्कोर हैं। मुझे इत्तला दे देनी चाहिए थी।

ठीक है, अब करने के लिए स्ट्रैसेकम्प () . मैं जिस cppreference.com वेब साइट का उपयोग कर रहा हूं वह केवल मानक C/C++ लगती है। मैंने मैक ओएस एक्स एक्सकोड विशिष्ट संदर्भ साइट के लिए गुगल किया है और मुझे एक नहीं मिला है। एक अच्छी Mac OS X C++ संदर्भ वेबसाइट क्या है? या, क्या एक्सकोड में कहीं सी ++ संदर्भ बनाया गया है और मुझे अभी यह नहीं मिला है? या, यह सब विफल होने पर, क्या ऐप्पल डेवलपमेंट सेंटर में कोई ऐसा है जिसे मैंने भी याद किया है?

एक्सकोड डिस्कमेज जितना बड़ा है कि मैं संकेत मिलने पर डाउनलोड और इंस्टॉल करता हूं, निश्चित रूप से वहां किसी में एक भाषा संदर्भ है - मेरा मतलब है, जावा सामग्री जिसे मैंने शुरू में डाउनलोड किया था वह बहुत बड़ा था।

टोड

क्रेवनिक

सितम्बर 8, 2003
  • जून 11, 2007
टोडबर्च ने कहा: ठीक है, अब तो स्ट्रैसेकम्प () . मैं जिस cppreference.com वेब साइट का उपयोग कर रहा हूं वह केवल मानक C/C++ लगती है। मैंने मैक ओएस एक्स एक्सकोड विशिष्ट संदर्भ साइट के लिए गुगल किया है और मुझे एक नहीं मिला है। एक अच्छी Mac OS X C++ संदर्भ वेबसाइट क्या है? या, क्या एक्सकोड में कहीं सी ++ संदर्भ बनाया गया है और मुझे अभी यह नहीं मिला है? या, यह सब विफल होने पर, क्या ऐप्पल डेवलपमेंट सेंटर में कोई ऐसा है जिसे मैंने भी याद किया है?

यह वहां है, लेकिन मुझे नहीं लगता कि यह पॉज़िक्स परत में सी कार्यों पर चला जाता है, केवल ऐप्पल के सभी अतिरिक्त पॉज़िक्स में। आप इनमें से कुछ कार्यों पर मैन पेजों तक पहुंचने के लिए टर्मिनल का उपयोग कर सकते हैं। 'man strcasecmp' आपको उस फ़ंक्शन के बारे में बात करने वाले पृष्ठ पर ले जाएगा और इसका उपयोग करने का वर्णन करेगा।

समझा

अक्टूबर 25, 2004
  • जून 11, 2007
एक्सकोड में चारों ओर घूमते हुए, मुझे इस पृष्ठ का एक लिंक मिला:

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

जो सी पुस्तकालय कार्यों सहित ओएस एक्स मैन पेजों में सब कुछ के लिए सामग्री की एक तालिका है।

एक्सकोड संदर्भ पुस्तकालय अन्य संसाधनों के अतिरिक्त मैन पेजों तक पहुंचता है, इसलिए ये सभी एक्सकोड के माध्यम से उपलब्ध हैं (मैं हर समय 'एपीआई संदर्भ में चयनित टेक्स्ट ढूंढें' का उपयोग करता हूं)।

ऐसा लगता है कि सी फ़ंक्शन सेक्शन 3 में हैं। ऐसा लगता है कि प्रत्येक फ़ंक्शन के दस्तावेज़ में एक 'मानक' या 'इतिहास' अनुभाग होता है जो कुछ जानकारी देता है कि फ़ंक्शन किस मानक का अनुपालन करता है। अनुपालन कारणों से स्पष्ट रूप से strcasecmp() को 'string.h' से 'strings.h' में स्थानांतरित कर दिया गया था। मुझे यकीन नहीं है कि यह किस तरह से अनुपालन करता है। मुझे लगता है कि इसका मतलब है कि गैर-मानक फ़ंक्शन string.h में प्रकट नहीं होना चाहिए, इसलिए उन्होंने इसे एक अलग हेडर फ़ाइल में स्थानांतरित कर दिया। टी

पिघलना

मूल पोस्टर
दिसंबर 4, 2006
कैटी, टेक्सास
  • जून 11, 2007
यह एक अच्छा संदर्भ पृष्ठ है! मुझे लगा कि ऐसी जानकारी कहीं थी!