Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी++ में स्ट्रिंग टू इंटीजर (एटोई)


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

जब str में गैर-व्हाट्सएप वर्णों का पहला अनुक्रम मान्य अभिन्न संख्या नहीं है, या जब ऐसा कोई क्रम मौजूद नहीं है क्योंकि या तो str खाली है या इसमें केवल सफेद स्थान हैं, तो कोई रूपांतरण नहीं किया जाएगा।

तो अगर इनपुट "-45" जैसा है, तो आउटपुट -45 होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • चिह्न :=1, आधार :=0, i :=0, n :=स्ट्रिंग का आकार
  • जबकि i
  • यदि पहला अक्षर है - तो हस्ताक्षर करें:=-1, अन्यथा हस्ताक्षर करें:=1
  • जबकि s[i] '0' से '9' की सीमा में
    • प्रत्येक वर्ण को पढ़ें और उसे एक पूर्णांक में बदलें, फिर प्रत्येक वर्ण के लिए आधार बढ़ाकर आधार गणना समायोजित करें।
  • नंबर वापस करें * चिह्न

उदाहरण(C++)

एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int myAtoi(string str) {
      int sign = 1;
      int base = 0;
      int i = 0;
      int n = str.size();
      while(i < n && str[i] == ' '){
         i++;
      }
      if(str[i] == '-' || str[i] == '+') sign = 1 - 2*(str[i++] =='-');
      while(str[i] >= '0' && str[i] <='9'){
         if(base > INT_MAX/10 || base == INT_MAX/10 && str[i]- '0' > INT_MAX %10){
            if(sign == 1)return INT_MAX;
               return INT_MIN;
            }
            base = (base * 10) + (str[i++] - '0');
         }
         return base * sign;
   }
};
main(){
   Solution ob;
   cout << ob.myAtoi("-45")<<endl;
   cout << ob.myAtoi(" 56")<<endl;
   cout << ob.myAtoi("100")<<endl;
}

इनपुट

"-45"
" 56"
"100"

आउटपुट

-45
56
100

  1. C++ में संख्या स्ट्रिंग को पूर्णांकों में बदलें

    यहां हम देखेंगे कि किसी संख्या स्ट्रिंग को पूर्णांक प्रकार डेटा में कैसे परिवर्तित किया जाए। हम atoi () फ़ंक्शन का उपयोग करके इस समस्या को हल कर सकते हैं। यह फ़ंक्शन स्ट्रिंग को इनपुट के रूप में लेता है और पूर्णांक डेटा में परिवर्तित करता है। atoi() फ़ंक्शन लाइब्रेरी में मौजूद है। Input: A number

  1. सी ++ में एक पूर्णांक को हेक्स स्ट्रिंग में कनवर्ट करें

    इस कार्यक्रम में हम देखेंगे कि एक पूर्णांक को हेक्स स्ट्रिंग में कैसे परिवर्तित किया जाए। एक पूर्णांक को हेक्साडेसिमल स्ट्रिंग में बदलने के लिए हम गणितीय चरणों का पालन कर सकते हैं। लेकिन इस मामले में हमने आसान ट्रिक का इस्तेमाल करके इस समस्या का समाधान कर दिया है। C/C++ में एक फॉर्मेट स्पेसिफायर %X

  1. सी ++ में एक स्ट्रिंग को टोकननाइज़ करें?

    पहला तरीका है, रिक्त स्थान से अलग किए गए शब्दों को पढ़ने के लिए एक स्ट्रिंगस्ट्रीम का उपयोग करना। यह थोड़ा सीमित है लेकिन यदि आप उचित जांच प्रदान करते हैं तो यह कार्य काफी अच्छी तरह से करता है। उदाहरण #include <vector> #include <string> #include <sstream> using namespace std; in