প্রোগ্রামে ব্যবহারকারীর ইনপুট একটি বৈধ পূর্ণসংখ্যা (integer) কিনা তা যাচাই করতে হলে স্ট্রিং হিসেবে ইনপুট নিয়ে প্রতিটি ক্যারেক্টার চেক করতে হয়।
পদ্ধতি
- ইনপুট স্ট্রিং হিসেবে নিন (
std::stringবাchar[]) - প্রতিটি ক্যারেক্টার লুপ করে চেক করুন
isdigit()ফাংশন দিয়ে - যদি কোনো নন-ডিজিট ক্যারেক্টার পাওয়া যায় তবে
falseরিটার্ন করুন - সব ডিজিট হলে
trueরিটার্ন করুন
উদাহরণ (C++)
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
bool isNumeric(string str) {
for (int i = 0; i < str.length(); i++)
if (isdigit(str[i]) == false)
return 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";
return 0;
}
আউটপুট
Enter a string: 5687
This is a Number
Enter a string: 584asS
This is not a number
উন্নত সংস্করণ (সাইন এবং হোয়াইটস্পেস হ্যান্ডলিং)
bool isInteger(const string &s) {
if (s.empty()) return false;
size_t i = 0;
if (s[0] == '+' || s[0] == '-') i = 1; // সাইন স্কিপ
if (i == s.size()) return false; // শুধু সাইন হলে নয়
for (; i < s.size(); i++)
if (!isdigit(s[i])) return false;
return true;
}
সি-তে (char array ব্যবহার করে)
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int is_numeric(const char *str) {
if (!str || !*str) return 0;
if (*str == '+' || *str == '-') str++;
if (!*str) return 0;
while (*str) {
if (!isdigit(*str)) return 0;
str++;
}
return 1;
}
সামान्य ভুল
atoiবাstrtolব্যবহার করে ভুলভাবে চেক করা — এগুলো পার্সিং-এর সময় এরর সাইলেন্টলি হ্যান্ডেল করে- নেগেটিভ নম্বর বা লিডিং স্পেস হ্যান্ডল না করা