Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memastikan Input Berangka Hanya Menggunakan `cin` C?

Bagaimanakah Saya Boleh Memastikan Input Berangka Hanya Menggunakan `cin` C?

Mary-Kate Olsen
Lepaskan: 2024-12-16 07:47:10
asal
771 orang telah melayarinya

How Can I Ensure Only Numeric Input Using C  's `cin`?

Meningkatkan Pengesahan Input: Menerima Input Berangka Sahaja

Apabila menggunakan cin untuk menerima input pengguna, adalah penting untuk menguatkuasakan ketepatan data, terutamanya apabila berurusan dengan nilai angka. Kod yang disediakan menghadapi isu di mana aksara bukan angka, seperti "x" dalam "1x," diabaikan, yang berpotensi membawa kepada hasil yang salah.

Penyelesaian Teguh

Untuk membetulkan isu ini, pendekatan yang lebih teliti ialah menggunakan std::getline dan std::string untuk menangkap keseluruhan baris input, termasuk sebarang aksara bukan angka. Coretan kod dipertingkat berikut menunjukkan pendekatan ini:

#include <string>
#include <sstream>

double enter_number()
{
    double number;
    std::string line;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> number) {
            if (ss.eof()) { // Success
                break;
            }
        }
        std::cout << "Invalid input" << std::endl;
        std::cout << "Try again" << std::endl;
    }
    return number;
}
Salin selepas log masuk

Menjelaskan Pelaksanaan

  • std::getline menangkap keseluruhan baris input, termasuk ruang dan khas aksara.
  • std::stringstream digunakan untuk menukar baris input menjadi dua jenis data.
  • Yang >> operator mengekstrak nilai berangka daripada baris input.
  • Semakan eof memastikan bahawa keseluruhan baris telah berjaya ditukar kepada dua kali sebelum keluar dari gelung.
  • Kesimpulan

    Dengan pendekatan yang dipertingkatkan ini, sebarang percubaan untuk memasukkan aksara bukan angka akan dibenderakan sebagai tidak sah input, dan pengguna akan digesa untuk memasukkan semula nombor yang sah. Penyelesaian ini berkesan menangani isu yang dibentangkan dalam kod asal, memastikan bahawa hanya input berangka yang sah diterima, tanpa mengira sebarang aksara bukan angka tambahan dalam baris input.

    Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Input Berangka Hanya Menggunakan `cin` C?. 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