C++ Cin Data Type Check

5 min read Jul 01, 2024
C++ Cin Data Type Check

C++ cin Data Type Check

Dalam pemrograman C++, cin merupakan objek yang digunakan untuk menerima input dari pengguna melalui keyboard. Namun, cin secara default tidak melakukan pengecekan tipe data inputan. Ini berarti, jika pengguna memasukkan data yang tidak sesuai dengan tipe data yang diharapkan, program dapat mengalami error atau menghasilkan output yang tidak diinginkan.

Untuk mengatasi masalah ini, kita perlu melakukan pengecekan tipe data secara manual sebelum memproses input dari pengguna. Berikut beberapa cara untuk melakukan pengecekan tipe data pada input cin:

1. Menggunakan cin.fail():

cin.fail() merupakan fungsi yang mengembalikan nilai boolean (true atau false) berdasarkan status cin. Jika cin gagal membaca data dengan benar, cin.fail() akan mengembalikan true, dan sebaliknya.

Contoh:

#include 

using namespace std;

int main() {
  int umur;

  cout << "Masukkan umur anda: ";
  cin >> umur;

  if (cin.fail()) {
    cout << "Input tidak valid. Harap masukkan angka.\n";
  } else {
    cout << "Umur anda adalah: " << umur << endl;
  }

  return 0;
}

Pada contoh di atas, program akan memeriksa apakah cin gagal membaca data sebagai integer. Jika gagal, program akan menampilkan pesan error dan menghentikan eksekusi.

2. Menggunakan cin.ignore():

cin.ignore() digunakan untuk membersihkan buffer input cin dari karakter yang tidak terbaca. Ini berguna untuk membersihkan buffer setelah input yang tidak valid, sehingga program dapat menerima input baru.

Contoh:

#include 

using namespace std;

int main() {
  int umur;

  cout << "Masukkan umur anda: ";
  cin >> umur;

  if (cin.fail()) {
    cout << "Input tidak valid. Harap masukkan angka.\n";
    cin.ignore(numeric_limits::max(), '\n'); // Mengosongkan buffer cin
  } else {
    cout << "Umur anda adalah: " << umur << endl;
  }

  return 0;
}

Pada contoh ini, setelah cin.fail() terdeteksi, cin.ignore() digunakan untuk membersihkan buffer input sebelum program menerima input baru.

3. Menggunakan stringstream:

stringstream adalah kelas yang memungkinkan kita untuk mengonversi string menjadi tipe data lain dan sebaliknya. Kita dapat menggunakan stringstream untuk mengecek apakah string input dapat dikonversi ke tipe data yang diharapkan.

Contoh:

#include 
#include 

using namespace std;

int main() {
  string input;
  int umur;

  cout << "Masukkan umur anda: ";
  getline(cin, input); // Mendapatkan input sebagai string

  stringstream ss(input); 
  if (ss >> umur) {
    cout << "Umur anda adalah: " << umur << endl;
  } else {
    cout << "Input tidak valid. Harap masukkan angka.\n";
  }

  return 0;
}

Pada contoh ini, input diterima sebagai string dan kemudian dikonversi ke integer menggunakan stringstream. Jika konversi berhasil, program akan menampilkan output, jika tidak, program akan menampilkan pesan error.

4. Menggunakan fungsi isdigit():

isdigit() merupakan fungsi library C++ yang mengembalikan true jika karakter yang diberikan adalah digit, dan false jika bukan. Kita dapat menggunakan fungsi ini untuk mengecek apakah input yang diterima adalah digit.

Contoh:

#include 
#include  // Header untuk isdigit()

using namespace std;

int main() {
  char input;

  cout << "Masukkan digit: ";
  cin >> input;

  if (isdigit(input)) {
    cout << "Input adalah digit.\n";
  } else {
    cout << "Input bukan digit.\n";
  }

  return 0;
}

Contoh ini menggunakan isdigit() untuk memeriksa apakah karakter yang dimasukkan merupakan digit.

Pengecekan tipe data pada input cin sangat penting untuk menjaga kestabilan program dan memastikan input yang valid. Dengan menggunakan metode yang dijelaskan di atas, kita dapat melakukan pengecekan yang tepat dan mencegah error yang tidak diinginkan.