Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membuat `cin` Hanya Terima Input Berangka dalam C ?

Bagaimana untuk Membuat `cin` Hanya Terima Input Berangka dalam C ?

DDD
DDDasal
2024-12-17 07:34:25617semak imbas

How to Make `cin` Accept Only Numerical Input in C  ?

Membuat cin Nombor Baca Sahaja

Menguatkuasakan input berangka menggunakan cin boleh menimbulkan cabaran, terutamanya apabila mengendalikan jenis input bercampur. Artikel ini menyiasat penyelesaian untuk memastikan bahawa cin hanya menerima nilai berangka.

Dalam kod yang disediakan, manakala gelung cuba membetulkan input yang tidak sah dengan mengabaikan aksara bukan berangka. Walau bagaimanapun, kaedah ini menghadapi had apabila berurusan dengan berbilang input.

Penyelesaian: Menggunakan std::getline dan std::string

Untuk mengatasi halangan ini, kita boleh menggunakan pendekatan yang lebih komprehensif:

  1. Baca keseluruhan baris menggunakan std::getline(): Ini membaca baris lengkap input pengguna sebagai rentetan.
  2. Tukar rentetan kepada double menggunakan std::stringstream:

    • Buat aliran rentetan ss daripada baris input.
    • Cuba untuk mengekstrak dua kali ganda menggunakan >> operator.
  3. Sahkan penukaran:

    • Semak sama ada penukaran berjaya dan jika strim telah sampai ke penghujung daripada rentetan (eof()).
    • Jika berjaya, keluar dari gelung. Jika tidak, paparkan mesej ralat.

Berikut ialah contoh pelaksanaan:

#include <sstream>
#include <string>

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

Penyelesaian ini memastikan kedua-dua integer dan nombor titik terapung diproses dengan betul , dengan aksara bukan berangka dibuang sepenuhnya.

Atas ialah kandungan terperinci Bagaimana untuk Membuat `cin` Hanya Terima Input Berangka dalam 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