C++ Cin Read String With Spaces

4 min read Jul 01, 2024
C++ Cin Read String With Spaces

Cara Membaca String dengan Spasi Menggunakan cin di C++

Dalam pemrograman C++, cin adalah objek yang digunakan untuk membaca input dari pengguna. Namun, cin memiliki keterbatasan dalam membaca string yang mengandung spasi. Secara default, cin akan berhenti membaca string saat menemukan spasi putih (spasi, tab, newline).

Berikut ini beberapa cara untuk mengatasi masalah ini:

1. Menggunakan getline()

getline() adalah fungsi yang dapat digunakan untuk membaca seluruh baris input, termasuk spasi. Fungsi ini mengambil dua argumen: objek cin dan sebuah variabel string yang akan menyimpan input.

#include 
#include 

using namespace std;

int main() {
  string input;

  cout << "Masukkan kalimat: ";
  getline(cin, input);

  cout << "Kalimat yang dimasukkan: " << input << endl;

  return 0;
}

2. Menggunakan cin.ignore()

cin.ignore() digunakan untuk mengabaikan karakter tertentu dari input buffer. Dengan menggunakan fungsi ini, kita dapat mengabaikan karakter newline yang tersisa di buffer setelah membaca input sebelumnya.

#include 
#include 

using namespace std;

int main() {
  string input;

  cout << "Masukkan kalimat: ";
  cin.ignore(); // Mengabaikan karakter newline dari buffer
  getline(cin, input); // Membaca seluruh baris

  cout << "Kalimat yang dimasukkan: " << input << endl;

  return 0;
}

3. Menggunakan cin.get()

cin.get() adalah fungsi yang dapat digunakan untuk membaca karakter per karakter dari input. Dengan fungsi ini, kita dapat membaca string yang mengandung spasi dengan menggunakan loop.

#include 
#include 

using namespace std;

int main() {
  string input;
  char karakter;

  cout << "Masukkan kalimat: ";
  while (cin.get(karakter) && karakter != '\n') {
    input += karakter;
  }

  cout << "Kalimat yang dimasukkan: " << input << endl;

  return 0;
}

4. Menggunakan cin.rdbuf()->getline()

Metode ini menggunakan rdbuf() untuk mendapatkan pointer ke streambuf dari objek cin. Kemudian, kita dapat menggunakan getline() dari streambuf untuk membaca seluruh baris input, termasuk spasi.

#include 
#include 

using namespace std;

int main() {
  string input;

  cout << "Masukkan kalimat: ";
  cin.rdbuf()->getline(input, 100); // Membaca maksimal 100 karakter

  cout << "Kalimat yang dimasukkan: " << input << endl;

  return 0;
}

Penjelasan Lebih Lanjut

  • getline(): Fungsi ini merupakan pilihan yang paling umum digunakan untuk membaca string dengan spasi. Fungsi ini dapat membaca seluruh baris input hingga karakter newline ditemukan.

  • cin.ignore(): Fungsi ini dapat digunakan untuk membersihkan input buffer dari karakter yang tidak diinginkan. Biasanya, fungsi ini digunakan untuk mengabaikan karakter newline yang tersisa di buffer setelah membaca input sebelumnya menggunakan cin.

  • cin.get(): Fungsi ini dapat digunakan untuk membaca karakter per karakter dari input. Fungsi ini memungkinkan kita untuk membaca string dengan spasi dengan menggunakan loop.

  • cin.rdbuf()->getline(): Metode ini memberikan akses langsung ke streambuf dari objek cin. Dengan menggunakan metode ini, kita dapat menggunakan getline() dari streambuf untuk membaca seluruh baris input.

Pilihan metode yang tepat tergantung pada kebutuhan program. Gunakan metode yang paling sesuai dengan kebutuhan dan preferensi Anda.

Latest Posts