Saya sudah mencoba beberapa hal,
std::stringstream m;
m.empty();
m.clear();
keduanya tidak bekerja.
sumber
Saya sudah mencoba beberapa hal,
std::stringstream m;
m.empty();
m.clear();
keduanya tidak bekerja.
Untuk semua jenis pustaka standar, fungsi anggota empty()
adalah kueri, bukan perintah, artinya ini berarti "Anda kosong?" bukan "tolong buang konten Anda".
Fungsi clear()
anggota diwarisi dari ios
dan digunakan untuk menghapus status kesalahan aliran, misalnya jika aliran file memiliki status kesalahan diatur ke eofbit
(akhir file), maka panggilan clear()
akan mengatur status kesalahan kembali ke goodbit
(tidak ada kesalahan) .
Untuk menghapus konten a stringstream
, gunakan:
m.str("");
benar, meskipun menggunakan:
m.str(std::string());
secara teknis lebih efisien, karena Anda menghindari memohon std::string
konstruktor yang mengambil const char*
. Tetapi setiap kompiler hari ini harus dapat menghasilkan kode yang sama dalam kedua kasus - jadi saya hanya akan pergi dengan apa pun yang lebih mudah dibaca.
Anda dapat menghapus status kesalahan dan mengosongkan stringstream semua dalam satu baris
Ini secara efektif me-reset m ke keadaan dibangun standar
sumber
sepertinya berhasil.
sumber
Ini harus menjadi cara yang paling dapat diandalkan terlepas dari kompiler:
sumber
mm.clear(); mm.str("");
melakukan trik. (tanpa C ++ 11, kalau tidak swap akan lebih baik).swap
lebih baik daripada memindahkan tugas?Saya selalu melakukan pelingkupan:
sumber
stringstream?
2 sen saya:
ini tampaknya bekerja untuk saya di xcode dan dev-c ++, saya punya program dalam bentuk menu yang jika dieksekusi secara iteratif sesuai permintaan pengguna akan mengisi variabel stringstream yang akan bekerja ok saat pertama kali kode akan jalankan tetapi tidak akan menghapus stringstream saat pengguna akan menjalankan kode yang sama. tetapi dua baris kode di bawah ini akhirnya membersihkan variabel stringstream setiap kali sebelum mengisi variabel string. (2 jam percobaan dan kesalahan dan pencarian google), btw, menggunakan setiap baris sendiri tidak akan melakukan trik.
sumber
Ini masalah konseptual.
Stringstream adalah aliran, jadi iteratornya maju, tidak bisa kembali. Dalam aliran string keluaran, Anda memerlukan flush () untuk menginisialisasi ulang, seperti pada aliran output lainnya.
sumber
Ini tidak membuang data dalam stringstream di gnu c ++
Berikut ini tidak mengosongkan stringstream untuk saya:
sumber