C++: Cara Mengecek Apakah String Hanya Mengandung Angka
Dalam pemrograman C++, seringkali kita perlu memvalidasi input pengguna atau data yang diproses. Salah satu validasi yang umum adalah memeriksa apakah sebuah string hanya mengandung angka. Artikel ini akan membahas cara melakukan pengecekan tersebut.
Metode 1: Menggunakan Loop dan isdigit()
Metode ini mengulang setiap karakter dalam string dan memeriksa apakah karakter tersebut adalah angka menggunakan fungsi isdigit()
dari library <cctype>
.
#include
#include
#include
using namespace std;
bool isDigitString(const string& str) {
for (char c : str) {
if (!isdigit(c)) {
return false; // Jika ada karakter non-angka, return false
}
}
return true; // Jika semua karakter adalah angka, return true
}
int main() {
string str1 = "12345";
string str2 = "abc123";
if (isDigitString(str1)) {
cout << str1 << " hanya mengandung angka." << endl;
} else {
cout << str1 << " tidak hanya mengandung angka." << endl;
}
if (isDigitString(str2)) {
cout << str2 << " hanya mengandung angka." << endl;
} else {
cout << str2 << " tidak hanya mengandung angka." << endl;
}
return 0;
}
Kode di atas mendefinisikan fungsi isDigitString()
. Fungsi ini menerima string sebagai input dan mengembalikan true
jika string tersebut hanya mengandung angka, dan false
jika tidak.
Penjelasan:
#include <iostream>
: Menyertakan library untuk input dan output.#include <string>
: Menyertakan library untuk manipulasi string.#include <cctype>
: Menyertakan library untuk fungsiisdigit()
.isDigitString(const string& str)
: Fungsi yang mengembalikantrue
jika string hanya mengandung angka.for (char c : str)
: Loop melalui setiap karakter dalam stringstr
.if (!isdigit(c))
: Memeriksa apakah karakterc
bukan angka. Jika ya, fungsi mengembalikanfalse
.return true;
: Jika semua karakter adalah angka, fungsi mengembalikantrue
.
Metode 2: Menggunakan Regular Expression
Metode ini menggunakan library regular expression (<regex>
) untuk memeriksa apakah string cocok dengan pola yang hanya mengandung angka.
#include
#include
#include
using namespace std;
bool isDigitString(const string& str) {
regex pattern("[0-9]+");
return regex_match(str, pattern);
}
int main() {
string str1 = "12345";
string str2 = "abc123";
if (isDigitString(str1)) {
cout << str1 << " hanya mengandung angka." << endl;
} else {
cout << str1 << " tidak hanya mengandung angka." << endl;
}
if (isDigitString(str2)) {
cout << str2 << " hanya mengandung angka." << endl;
} else {
cout << str2 << " tidak hanya mengandung angka." << endl;
}
return 0;
}
Penjelasan:
#include <regex>
: Menyertakan library untuk regular expression.isDigitString(const string& str)
: Fungsi yang mengembalikantrue
jika string hanya mengandung angka.regex pattern("[0-9]+")
: Membuat objek regular expressionpattern
dengan pola "[0-9]+", yang berarti satu atau lebih angka.return regex_match(str, pattern)
: Memeriksa apakah stringstr
cocok dengan polapattern
. Jika cocok, fungsi mengembalikantrue
.
Kedua metode di atas dapat digunakan untuk memeriksa apakah sebuah string hanya mengandung angka dalam C++. Pilih metode yang paling sesuai dengan kebutuhan Anda.