Rumah > pembangunan bahagian belakang > C++ > Mengapa `cin` Hanya Membaca Perkataan Pertama Input Pengguna?

Mengapa `cin` Hanya Membaca Perkataan Pertama Input Pengguna?

Patricia Arquette
Lepaskan: 2024-12-06 01:59:11
asal
557 orang telah melayarinya

Why Does `cin` Only Read the First Word of User Input?

Membaca Baris Lengkap daripada Pengguna dengan cin

Apabila cuba membaca baris lengkap input pengguna menggunakan cin , pembangun sering menghadapi isu di mana hanya perkataan pertama ditangkap. Untuk menangani masalah ini, adalah penting untuk menggunakan kaedah yang betul untuk pengekstrakan baris.

Dalam kod C yang diberikan, anda telah menggunakan cin >> y; untuk mengumpulkan input pengguna. Walau bagaimanapun, pendekatan ini hanya membaca sehingga aksara ruang pertama, menghasilkan tangkapan hanya satu perkataan.

Untuk membaca keseluruhan baris input dengan berkesan, beralih kepada menggunakan getline(cin, response) ;. Berikut ialah versi kod anda yang dikemas kini:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    char x;

    cout << "Would you like to write to a file?" << endl;
    cin >> x;
    if (x == 'y' || x == 'Y')
    {
        string response;
        cout << "What would you like to write." << endl;
        getline(cin, response); // Use getline instead of cin >>
        ofstream file;
        file.open("Characters.txt");
        file << strlen(response) << " Characters." << endl;
        file << endl;
        file << response;

        file.close();

        cout << "Done. \a" << endl;
    }
    else
    {
        cout << "K, Bye." << endl;
    }
}
Salin selepas log masuk

Dengan menggunakan getline, anda kini boleh menangkap keseluruhan baris input dengan berkesan, menyelesaikan isu membaca satu perkataan sahaja.

Atas ialah kandungan terperinci Mengapa `cin` Hanya Membaca Perkataan Pertama Input Pengguna?. 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