Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah C Streams Boleh Digunakan untuk Mengendalikan Input Numerik Tidak Sah dengan Amanah?

Bagaimanakah C Streams Boleh Digunakan untuk Mengendalikan Input Numerik Tidak Sah dengan Amanah?

Barbara Streisand
Lepaskan: 2024-12-28 15:11:14
asal
998 orang telah melayarinya

How Can C   Streams Be Used to Reliably Handle Invalid Numeric Input?

Menyelesaikan Input Tidak Sah dengan C Stream

Masalah:

Kod yang disediakan bertujuan untuk menghalang aksara bukan angka daripada menjadi diterima sebagai input. Walau bagaimanapun, ia gagal mengendalikan situasi di mana input termasuk aksara selepas nombor yang sah.

Penyelesaian Cadangan:

Untuk menangani isu ini, kami cadangkan menggunakan pendekatan yang berbeza menggunakan std::getline dan std::string.

Kod Coretan:

#include <string>
#include <sstream>

int main() {
    std::string line;
    double d;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> d) {
            if (ss.eof()) {   // Success
                break;
            }
        }
        std::cout << "Error!" << std::endl;
    }
    std::cout << "Finally: " << d << std::endl;
}
Salin selepas log masuk

Penjelasan:

Penyelesaian yang disemak ini mengikut langkah berikut:

  1. Baca keseluruhannya line: Menggunakan std::getline, keseluruhan baris input, termasuk ruang dan aksara khas, ialah diambil ke dalam baris pembolehubah rentetan.
  2. Tukar rentetan kepada berganda: Objek std::stringstream ss dicipta untuk memegang garis rentetan. Strim kemudiannya digunakan untuk mengekstrak nilai berangka menggunakan >> operator.
  3. Semak untuk penukaran yang berjaya: Jika strim ss berjaya mengeluarkan nombor dan mencapai penghujung rentetan, ia menunjukkan input angka yang sah.
  4. Kendalikan ralat: Jika penukaran gagal, mesej ralat adalah dipaparkan.
  5. Pendekatan ini memastikan bahawa hanya nombor nyata yang sah diterima sebagai input, tanpa mengira sebarang aksara atau ruang di belakang dalam input.

    Atas ialah kandungan terperinci Bagaimanakah C Streams Boleh Digunakan untuk Mengendalikan Input Numerik Tidak Sah dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan