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

C++ में कैसे जांचें कि इनपुट न्यूमेरिक है या नहीं

न्यूमेरिक स्ट्रिंग वैलिडेशन

यहां हम देखेंगे कि कैसे जांचें कि दिया गया इनपुट न्यूमेरिक स्ट्रिंग है या सामान्य स्ट्रिंग। न्यूमेरिक स्ट्रिंग केवल 0-9 रेंज के कैरेक्टर्स रखेगी। समाधान बहुत सरल है: हम बस प्रत्येक कैरेक्टर को एक-एक करके देखेंगे और जांचेंगे कि यह न्यूमेरिक है या नहीं। यदि यह न्यूमेरिक है, तो अगले पर जाएं, अन्यथा false रिटर्न करें।

उदाहरण: isNumeric फ़ंक्शन

#include <iostream>
#include <string>
#include <cctype>  // isdigit के लिए
using namespace std;

bool isNumeric(const string& str) {
    if (str.empty()) return false;
    
    for (char c : str) {
        if (!isdigit(static_cast<unsigned char>(c)))
            return false;  // गैर-न्यूमेरिक मिलने पर false रिटर्न करें
    }
    return true;
}

int main() {
    string str;
    cout << "Enter a string: ";
    cin >> str;
    
    if (isNumeric(str))
        cout << "This is a Number" << endl;
    else
        cout << "This is not a number" << endl;
    
    return 0;
}

आउटपुट

Enter a string: 5687
This is a Number
Enter a string: 584asS
This is not a number

उन्नत वैलिडेशन

ऋणात्मक संख्याओं को संभालना

bool isInteger(const string& str) {
    if (str.empty()) return false;
    
    size_t start = 0;
    if (str[0] == '-' || str[0] == '+') {
        if (str.size() == 1) return false;  // केवल साइन
        start = 1;
    }
    
    for (size_t i = start; i < str.size(); ++i) {
        if (!isdigit(static_cast<unsigned char>(str[i])))
            return false;
    }
    return true;
}

फ्लोटिंग-पॉइंट संख्याओं को संभालना

bool isFloat(const string& str) {
    if (str.empty()) return false;
    
    size_t start = 0;
    if (str[0] == '-' || str[0] == '+') start = 1;
    if (start == str.size()) return false;
    
    bool decimal_seen = false;
    bool digit_seen = false;
    
    for (size_t i = start; i < str.size(); ++i) {
        char c = str[i];
        if (isdigit(static_cast<unsigned char>(c))) {
            digit_seen = true;
        } else if (c == '.' && !decimal_seen) {
            decimal_seen = true;
        } else {
            return false;
        }
    }
    return digit_seen;
}

मॉडर्न C++ दृष्टिकोण (C++11/17)

std::all_of के साथ

#include <algorithm>
#include <cctype>

bool isNumeric(const string& str) {
    return !str.empty() && all_of(str.begin(), str.end(), 
        [](char c) { return isdigit(static_cast<unsigned char>(c)); });
}

std::from_chars का उपयोग करना (C++17) - सबसे मजबूत

#include <charconv>
#include <string_view>

bool isInteger(const string_view str) {
    int value;
    auto result = from_chars(str.data(), str.data() + str.size(), value);
    return result.ec == errc() && result.ptr == str.data() + str.size();
}

bool isDouble(const string_view str) {
    double value;
    auto result = from_chars(str.data(), str.data() + str.size(), value);
    return result.ec == errc() && result.ptr == str.data() + str.size();
}

सारांश

विधिपक्षविपक्ष
मैनुअल लूपसरल, कोई डिपेंडेंसी नहींकेवल अनसाइन्ड इंटीजर्स
std::all_ofक्लीन, फंक्शनल स्टाइलकेवल बेसिक चेक
std::from_charsफास्ट, कोई एक्सेप्शन नहीं, सटीकC++17 आवश्यक, कोई लोकल सपोर्ट नहीं
stringstreamफ्लोट्स/हैक्स संभालता हैधीमा, ढीला पार्सिंग
stoi/stodसरल APIएक्सेप्शन फेंकता है, आंशिक पार्सिंग अनुमति देता है
  1. - C# में जांचें कि स्ट्रिंग वैध कीवर्ड है या नहीं

    यह जांचने के लिए कि क्या कोई स्ट्रिंग वैध कीवर्ड है, IsValidIdentifier विधि का उपयोग करें। IsValidIdentifier विधि जांचती है कि दर्ज किया गया मान पहचानकर्ता है या नहीं। यदि यह पहचानकर्ता नहीं है, तो यह C# में एक कीवर्ड है। आइए एक उदाहरण देखें, जहां हमने CodeDomProvider सेट किया है और IsValidIdentifi

  1. - Python 3 में Raw Input Integer है या नहीं कैसे Check करें?

    Input Integer Check करना (Python 3) String Class में isdigit() नामक एक Method होता है जो True Return करता है यदि String में सभी Characters Digits हैं और कम से कम एक Character है, अन्यथा False। यहां तक कि यदि आप Float Input करते हैं, तो यह False Return करेगा। उदाहरण: isdigit() का उपयोग >>>

  1. - पायथन में कैसे जांचें कि स्ट्रिंग अल्फान्यूमेरिक है?

    पायथन स्ट्रिंग क्लास में isalnum() नामक एक मेथड होता है जिसे स्ट्रिंग पर कॉल किया जा सकता है और यह हमें बताता है कि स्ट्रिंग में केवल अल्फान्यूमेरिक्स हैं या नहीं। आप इसे निम्न प्रकार से कॉल कर सकते हैं: >>> 123abc.isalnum() True >>> 123#$%abc.isalnum() False आप उसी परिणाम के लिए r