Menyimpan Input Pengguna ke dalam Vektor: Panduan Komprehensif
Dalam pertanyaan ini, pengguna cuba memasukkan berbilang nombor ke dalam vektor dan kemudian mengiranya menggunakan panggilan fungsi. Kod yang disediakan di bawah menunjukkan isu di mana hanya nombor pertama dikira:
<code class="cpp">template <typename T> void write_vector(const vector<T>& V) { cout << "The numbers in the vector are: " << endl; for(int i=0; i < V.size(); i++) cout << V[i] << " "; } int main() { int input; vector<int> V; cout << "Enter your numbers to be evaluated: " << endl; cin >> input; V.push_back(input); write_vector(V); return 0; }</code>
Penyebabnya terletak pada fakta bahawa pada masa ini, hanya satu integer sedang dibaca daripada pengguna. Untuk membetulkan ini, gelung diperlukan.
<code class="cpp">while (cin >> input) V.push_back(input);</code>
Gelung ini secara berterusan mendapatkan semula integer daripada input standard sehingga tiada lagi input tersedia. Proses input berakhir apabila cin mengesan hujung fail (EOF) atau menemui nilai bukan integer.
Sebagai alternatif, nilai sentinel boleh digunakan, yang mempunyai kelemahan menghalang pengguna daripada memasukkan nilai tertentu itu . Contohnya:
<code class="cpp">while ((cin >> input) && input != 9999) V.push_back(input);</code>
Dalam senario ini, input dikumpul sehingga pengguna memasuki 9999 (atau mencetuskan syarat lain yang menjadikan cin tidak sah), di mana gelung ditamatkan.
Atas ialah kandungan terperinci Mengapa hanya nombor pertama dikira semasa menyimpan input pengguna ke dalam vektor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!