0Pricing
C++ Academy · Pelajaran

Membaca Input dengan Aman menggunakan getline

Gunakan std::getline untuk membaca baris dan validasi input pengguna sebelum menggunakannya

Membaca Input dengan Aman menggunakan getline adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Mengapa Masukan yang Aman Penting

Masukan pengguna merupakan sumber kerusakan program yang paling umum. Tipe yang salah, baris kosong, atau karakter tak terduga semuanya dapat merusak program naif. Pembacaan defensif sangat penting.

Dasar-Dasar std::getline

std::getline(stream, line) membaca karakter hingga baris baru berikutnya. Baris baru tersebut dikonsumsi, tetapi tidak disimpan.

std::string line;
std::getline(std::cin, line);

Pembatas Khusus

Berikan argumen ketiga untuk berhenti pada karakter apa pun — bukan hanya baris baru.

std::string field;
std::getline(std::cin, field, ',');

Memvalidasi Masukan Numerik

Bacalah seluruh baris terlebih dahulu, lalu lakukan penguraian. Cara ini menghindari status kegagalan cin ketika masukan tidak valid.

std::string line;
int n;
if (std::getline(std::cin, line)) {
    try {
        n = std::stoi(line);
    } catch (...) {
        std::cout << "Invalid number\n";
    }
}

Melakukan Perulangan hingga Valid

Gabungkan getline dengan try/catch agar Anda terus meminta masukan sampai pengguna memberikan nilai yang valid.

int age;
while (true) {
    std::cout << "Age: ";
    std::string line;
    std::getline(std::cin, line);
    try {
        age = std::stoi(line);
        if (age >= 0 && age < 150) break;
    } catch (...) {}
    std::cout << "Try again.\n";
}

Mendeteksi EOF dalam getline

getline menetapkan aliran ke status gagal saat mencapai EOF. Periksa aliran setelah pemanggilan tersebut.

std::string line;
while (std::getline(std::cin, line)) {
    process(line);
}

Memangkas Spasi Kosong

Pengguna sering menambahkan spasi yang tidak diperlukan. Pangkas kedua ujung string setelah membacanya.

void trim(std::string& s) {
    size_t start = s.find_first_not_of(" \t\r\n");
    size_t end   = s.find_last_not_of(" \t\r\n");
    s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
}

Menghapus Sisa Karakter dari Aliran

Jika Anda mencampur >> dan getline, hapus karakter yang tersisa terlebih dahulu.

std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Membaca Beberapa Nilai per Baris

Bacalah seluruh baris, lalu masukkan ke dalam stringstream dan lakukan ekstraksi.

std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
int a, b, c;
iss >> a >> b >> c;

Perlindungan terhadap Panjang Maksimum

Tolak masukan yang terlalu panjang sejak awal untuk mencegah penggunaan sumber daya secara tidak sengaja hingga habis.

std::string line;
if (std::getline(std::cin, line) && line.size() > 1024) {
    std::cout << "Input too long.\n";
    return 1;
}

Membaca Kata Sandi atau Masukan Tersembunyi

Pustaka standar tidak menyembunyikan masukan yang ditampilkan kembali. Gunakan API platform seperti termios di Unix atau SetConsoleMode di Windows untuk permintaan kata sandi.

Pemeriksaan Cepat

Mengapa lebih aman membaca dengan getline lalu mengurai hasilnya, daripada menggunakan std::cin >> n?

Ringkasan

Bacalah masukan pengguna dengan std::getline, lakukan validasi atau penguraian secara terpisah, lalu pangkas spasi kosong. Bungkus penguraian dalam try/catch dan lakukan perulangan sampai mendapatkan nilai yang valid. Hapus sisa karakter dari aliran saat mencampur ekstraksi dan pembacaan baris.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membaca Input dengan Aman menggunakan getline” gratis?

Ya — teks lengkap “Membaca Input dengan Aman menggunakan getline” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membaca Input dengan Aman menggunakan getline”?

Gunakan std::getline untuk membaca baris dan validasi input pengguna sebelum menggunakannya Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Membaca Input dengan Aman menggunakan getline” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menggunakan std::cin dan std::cout dengan Benar
  2. Memformat Keluaran dengan iomanip
  3. Membaca Input dengan Aman menggunakan getline
  4. Bekerja dengan std::cerr dan std::clog
← Kembali ke C++ Academy