Mengapa Menyalin Stringstream Dilarang
Menyalin objek rentetan tidak dibenarkan dalam C kerana penswastaan pembina salinannya. Ini terpakai pada semua jenis strim, termasuk aliran rentetan, istream, ostream dan iostream.
Strim bukan bekas yang boleh diduplikasi. Ia berfungsi sebagai saluran yang melaluinya data mengalir, menyambungkan sumber kepada sinki. Tidak seperti bekas, aliran tidak menyimpan data sebaliknya memudahkan penghantarannya.
Pertimbangkan analogi aliran kepada paip yang mengangkut data. Mencipta salinan strim adalah serupa dengan mencipta paip tambahan yang disambungkan ke sumber data yang sama. Walau bagaimanapun, memandangkan data telah digunakan oleh aliran asal, tiada data baharu yang akan diterima oleh salinan.
Untuk menggambarkan:
int main() { std::stringstream s1("This is my string."); std::stringstream s2 = s1; // error, copying not allowed }
Dalam contoh ini, cuba untuk salin s1 ke dalam s2 mengakibatkan ralat kerana ia akan mewujudkan sambungan pendua ke sumber data yang telah habis.
Semasa menyalin aliran adalah dilarang, membuat rujukan kepada mereka masih dibenarkan. Ini membenarkan berbilang entiti kod mengakses sumber data asas yang sama tanpa memerlukan pendua.
std::istream copy_cin = std::cin; //error std::istream & ref_cin = std::cin; //ok
Selain itu, adalah mungkin untuk mencipta objek strim baharu yang menggunakan penimbal asas yang sama seperti strim sedia ada.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menyalin Objek `stringstream` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!