C ++ strcoll () - C ++ Standard Library

सी ++ में स्ट्रैकोल () फ़ंक्शन दो नल समाप्ति स्ट्रिंग की तुलना करता है। तुलना LC_COLLATE श्रेणी द्वारा परिभाषित वर्तमान स्थान पर आधारित है।

strcmp () अधिकांश स्ट्रिंग तुलनाओं के लिए पर्याप्त है, लेकिन यूनिकोड वर्णों के साथ काम करते समय, कभी-कभी कुछ बारीकियां होती हैं जो बाइट-टू-बाइट स्ट्रिंग तुलना को गलत बनाती हैं।

उदाहरण के लिए, यदि आप स्पैनिश भाषा में दो तारों की तुलना कर रहे हैं, तो वे,, é, í, ú, ü, ñ, ñ, are, uated इत्यादि जैसे उच्चारण पात्र शामिल कर सकते हैं।

डिफ़ॉल्ट रूप से, ऐसे उच्चारण वर्ण a, b, c… z के पूरे वर्णमाला के बाद आते हैं। इस तरह की तुलना दोषपूर्ण होगी क्योंकि a के विभिन्न उच्चारण वास्तव में b से पहले आने चाहिए।

इस तरह के मामलों में अधिक सटीक परिणाम देने वाली तुलना करने के लिए strcoll () वर्तमान स्थान का उपयोग करता है।

इसे हेडर फ़ाइल में परिभाषित किया गया है।

strcoll () प्रोटोटाइप

 int strcoll (const char * lhs, const char * rhs);

Strcoll () फ़ंक्शन दो तर्क लेता है: lhs और rhs। यह LC_COLLATE श्रेणी के वर्तमान स्थान के आधार पर lhs और rhs की सामग्री की तुलना करता है।

strcoll () पैरामीटर

  • lhs और rhs: अशक्त की ओर इशारा करते हुए तार की तुलना करना।

strcoll () वापसी मान

Strcoll () फ़ंक्शन एक रिटर्न देता है:

  • धनात्मक मान यदि lhs में पहला भिन्न वर्ण rhs में संबंधित वर्ण से अधिक है।
  • ऋणात्मक मान यदि lhs में पहले भिन्न वर्ण rhs में संबंधित वर्ण से कम है।
  • 0 अगर lhs और rhs बराबर हैं।

उदाहरण: strcoll () फ़ंक्शन कैसे काम करता है?

 #include #include using namespace std; int main() ( char lhs() = "Armstrong"; char rhs() = "Army"; int result; result = strcoll(lhs,rhs); cout < 0) cout << rhs << " precedes " << lhs << endl; else if (result < 0) cout << lhs << " precedes " << rhs << endl; else cout << lhs << " and " << rhs << " are same" << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 वर्तमान लोकल में आर्मस्ट्रांग सेना से पहले हैं

दिलचस्प लेख...