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
Lepaskan: 2024-12-17 07:34:25
asal
615 orang telah melayarinya

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;
}
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan