Rumah >pembangunan bahagian belakang >C++ >Mengapa `cin` Hanya Membaca Perkataan Pertama Input Pengguna?
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!