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

Mengapa `cin` Hanya Membaca Perkataan Pertama Input Pengguna?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 01:59:11556semak imbas

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

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!

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