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
Mary-Kate Olsenasal
2024-12-16 07:47:10781semak imbas

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;
}

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!

Kenyataan:
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