सी ++ स्ट्रेटोड () - सी ++ स्टैंडर्ड लाइब्रेरी

C ++ में strtod () फ़ंक्शन एक स्ट्रिंग की सामग्री को एक अस्थायी बिंदु संख्या के रूप में व्याख्या करता है और एक डबल के रूप में इसका मान लौटाता है।

यह फ़ंक्शन स्ट्रिंग के अंतिम वैध चरित्र के बाद पहले वर्ण को इंगित करने के लिए एक संकेतक भी सेट करता है यदि कोई हो, अन्यथा सूचक शून्य पर सेट है।

आधार 10 और स्ट्रिंग "12abc" के लिए

मान्य संख्यात्मक भाग -> 12

मान्य संख्यात्मक भाग के बाद पहला चरित्र -> ए

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

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

 डबल स्ट्रटोड (कास्ट चार * स्ट्र, चार ** एंड);

Strtod () फ़ंक्शन स्ट्रिंग और एक पॉइंटर को चरित्र के रूप में अपने पैरामीटर के रूप में लेता है, स्ट्रिंग की सामग्री को एक floatसंख्या के रूप में व्याख्या करता है और एक doubleमान लौटाता है ।

strtod () पैरामीटर्स

  • str : एक स्ट्रिंग जो फ्लोटिंग पॉइंट नंबर का प्रतिनिधित्व करती है।
  • अंत : प्रकार चार के पहले से ही आवंटित वस्तु का संदर्भ *। अंतिम मान वर्ण के बाद str में अगले वर्ण के लिए अंत का मान सेट है। यह पैरामीटर एक शून्य सूचक भी हो सकता है, जिस स्थिति में इसका उपयोग नहीं किया जाता है।

strtod () रिटर्न वैल्यू

Strtod () फ़ंक्शन रिटर्न:

  • एक डबल मान (जिसे स्ट्रिंग से परिवर्तित किया गया है)।
  • 0.0 यदि कोई वैध रूपांतरण नहीं किया जा सका।

यदि परिवर्तित मान सीमा से बाहर है, तो एक सीमा त्रुटि होती है और एक सकारात्मक या नकारात्मक HUGE_VAL वापस आ जाता है।

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

 #include #include using namespace std; int main() ( char numberString() = "12.44b 0xy"; char *end; double number; number = strtod(numberString,&end); cout << "Number in String = " << numberString << endl; cout << "Number in Double = " << number << endl; cout << "End String = " << end << endl; return 0; ) 

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

 अंतिम स्ट्रिंग में संख्या = 12.44b 0xy डबल में संख्या = 12.44 स्ट्रिंग = b 0xy

उदाहरण 2: strtod () फ़ंक्शन अनुगामी वर्णों के बिना

 #include #include using namespace std; int main() ( char numberString() = "12.44"; char *end; double number; number = strtod(numberString,&end); cout << "Number in String = " << numberString << endl; cout << "Number in Double = " << number << endl; // If end is not Null if (*end) ( cout << end; ) // If end is Null else ( cout << "Null pointer"; ) return 0; ) 

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

 समाप्ति स्ट्रिंग में संख्या = 12.44 बी 0xy डबल में संख्या = 12.44 नल सूचक

Strtod () फ़ंक्शन के लिए एक मान्य फ़्लोटिंग-पॉइंट मान में एक वैकल्पिक + या - साइन इन निम्नलिखित सेटों में से एक होता है:

  • दशमलव फ़्लोटिंग-पॉइंट मान के लिए :

    • दशमलव अंकों (0-9) का एक समूह, वैकल्पिक रूप से दशमलव बिंदु (।) युक्त।
      उदाहरण के लिए: 13.170, -5.63, आदि।

    • एक वैकल्पिक प्रतिपादक भाग (ई या ई) जिसके बाद एक वैकल्पिक + या - चिह्न अंक और दशमलव अंकों का गैर-खाली क्रम है।
      उदाहरण के लिए: 3.46101e + 007, 13.19e-013, आदि।

  • हेक्साडेसिमल फ्लोटिंग-पॉइंट वैल्यू के लिए :

    • 0x या 0X से शुरू होने वाली एक स्ट्रिंग, जिसके बाद हेक्साडेसिमल अंकों का एक गैर-खाली अनुक्रम होता है, वैकल्पिक रूप से दशमलव बिंदु (!) से युक्त होता है।
      उदाहरण के लिए: 0xfa5, -0xb1f.24, आदि।

    • एक वैकल्पिक प्रतिपादक भाग (पी या पी) जिसके बाद एक वैकल्पिक + या - चिह्न और हेक्साडेसिमल अंकों का गैर-खाली क्रम है।
      उदाहरण के लिए: 0x51c.23p5, -0x2a.3p-3, आदि।

  • अनंत :

    • जानकारी या जानकारी (मामले की अनदेखी)।
      उदाहरण के लिए: -इनफ, इंफीनेटी, आदि।

  • NaN (संख्या नहीं) :

    • NAN या NANfterence (मामले की अनदेखी) जहां अनुक्रम वर्णों का एक अनुक्रम होता है जिसमें केवल अल्फ़ान्यूमेरिक वर्ण या अंडरस्कोर (_) होते हैं। परिणाम एक शांत NaN है।
      उदाहरण के लिए: नान, NaNab1, आदि।

उदाहरण 3: स्ट्रेटोड () घातांक और हेक्साडेसिमल के साथ कैसे काम करता है?

 #include #include #include using namespace std; int main() ( // initialize a exponential value char numberString() = "-44.01e-3End String"; char *end; double number; number = strtod(numberString,&end); cout << "Number in String = " << numberString << endl; cout << "Number in Double = " << number << endl; cout << "End String = " << end << endl << endl; // initialize a new hexadecimal value strcpy(numberString,"0xf1bc.51hello"); number = strtod(numberString,&end); cout << "Number in String = " << numberString << endl; cout << "Number in Double = " << number << endl; cout << "End String = " << end << endl; return 0; ) 

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

 स्ट्रिंग में संख्या = -44.01e-3End स्ट्रिंग संख्या डबल में = -0.04401 समाप्ति स्ट्रिंग = स्ट्रिंग में अंत संख्या = 0xf1bc.51hello डबल में संख्या = 61884.3 समाप्ति स्ट्रिंग / हैलो

उदाहरण 4: सूचना और NaN के लिए strtod मामले

 #include #include using namespace std; int main() ( char *end; cout << "INFINITY" << " to Double = " << strtod("INFINITY", &end) << endl; cout << "End String = " << end << endl << endl; cout << "Infabc" << " to Double = " << strtod("Infabc", &end) << endl; cout << "End String = " << end << endl << endl; cout << "NaN12a" << " to Double = " << strtod("NaN12a", &end) << endl; cout << "End String = " << end << endl << endl; return 0; ) 

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

 डबल = इनफिनिटी स्ट्रिंग के लिए इन्फिनिटी = इन्फैब से डबल = इन्फिनिटी स्ट्रिंग = एबीसी NaN12a से डबल = नैन एंड स्ट्रिंग = १२ ए

सामान्य तौर पर, strtod () फ़ंक्शन के लिए एक मान्य फ्लोटिंग प्वाइंट तर्क निम्न रूप में है:

(व्हाट्सएप) (- | +) (अंक) (.digits) ((ई | ई) (- | + +) अंक)

स्ट्रेटोड () फ़ंक्शन सभी प्रमुख व्हाट्सएप पात्रों को अनदेखा करता है जब तक कि प्राथमिक गैर-व्हाट्सएप चरित्र नहीं मिलता है।

फिर, इस चरित्र से शुरुआत करते हुए, यह संभव के रूप में कई वर्ण लेता है जो एक मान्य फ़्लोटिंग-पॉइंट प्रतिनिधित्व बनाता है और उन्हें फ़्लोटिंग पॉइंट मान में कनवर्ट करता है। अंतिम वैध चरित्र के अंत तक बताए गए ऑब्जेक्ट में संग्रहीत होने के बाद स्ट्रिंग से जो कुछ भी बचा है।

उदाहरण 5: प्रमुख व्हाट्सएप के साथ strtod () फ़ंक्शन

 #include #include using namespace std; int main() ( char *end; cout << "25.5" << " to Double = " << strtod(" 25.5", &end) << endl; // end pointer is set to null cout << "End String = " << end << endl << endl; // Returns 0 because of invalid conversion cout << "abc11.20" << " to Double = " << strtod("abc11.20", &end) << endl; cout << "End String = " << end << endl << endl; return 0; ) 

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

 25.5 से डबल = 25.5 एंड स्ट्रिंग = abc11.20 से डबल = 0 एंड स्ट्रिंग = abc11.20

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