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
Patricia Arquetteasal
2024-12-07 02:47:14304semak imbas

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

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!

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