Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengesahkan Input Pengguna Integer dengan Berkesan dalam C?

Bagaimanakah Saya Boleh Mengesahkan Input Pengguna Integer dengan Berkesan dalam C?

Patricia Arquette
Lepaskan: 2024-12-07 02:47:14
asal
300 orang telah melayarinya

How Can I Effectively Verify Integer User Input in C  ?

Mengesahkan Input Pengguna sebagai Integer

Pernyataan Masalah

Dalam program C, adalah penting untuk memastikan input pengguna berada dalam format yang diharapkan, terutamanya semasa menjalankan operasi matematik. Artikel ini membincangkan cara untuk menentukan sama ada input yang diberikan oleh pengguna ialah integer. Jika input bukan integer, program akan menggesa pengguna untuk memasukkan semula integer yang sah.

Penyelesaian

Terdapat dua pendekatan utama untuk mengesahkan input pengguna sebagai integer:

1. Menggunakan cin.fail():

  • Baca input menggunakan cin >>.
  • Semak keadaan aliran input menggunakan if (cin.fail() ).
  • Jika cin.fail() adalah benar, ini bermakna input bukan integer.

2. Menggunakan std::getline dan Manipulasi Rentetan:

  • Gunakan std::getline(std::cin, theInput) untuk menangkap input sebagai rentetan.
  • Semak rentetan untuk mana-mana aksara yang bukan nombor menggunakan if (theInput.find_first_not_of("0123456789") != std::string::npos).
  • Jika syarat adalah benar, ini bermakna input mengandungi aksara bukan angka.

Pelaksanaan

Di bawah ialah coretan kod yang melaksanakan std::getline dan manipulasi rentetan pendekatan:

#include <iostream>
#include <string>

int main() {

    std::string theInput;
    int inputAsInt;

    std::getline(std::cin, theInput);

    while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) {

        std::cout << "Error" << std::endl;

        if( theInput.find_first_not_of("0123456789") == std::string::npos) {
            std::cin.clear();
            std::cin.ignore(256,'\n');
        }

        std::getline(std::cin, theInput);
    }

    std::string::size_type st;
    inputAsInt = std::stoi(theInput,&amp;st);
    std::cout << inputAsInt << std::endl;
    return 0;
}
Salin selepas log masuk

Kod ini secara berterusan menggesa pengguna untuk memasukkan integer sehingga integer yang sah dimasukkan. Ia mengendalikan situasi di mana pengguna memasukkan aksara bukan angka atau memberikan input kosong.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Input Pengguna Integer dengan Berkesan 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan