Powiel możliwe:
How to reuse an ostringstream?Jak usunąć instancję std :: ostringstream, aby można ją było ponownie wykorzystać?
Używam std::ostringstream
przekonwertować float
i int
wartości ciągów, ale nie mogę znaleźć w każdym razie na ponowne wystąpienie. Aby zilustrować, co mam na myśli tutaj jest następujący wraz z metodami, które starałem się użyć, aby wyczyścić strumień
#include <iostream>
#include <sstream>
using namespace std;
int main() {
ostringstream stream;
stream << "Test";
cout << stream.str() << endl;
stream.flush();
stream << "----";
cout << stream.str() << endl;
stream.clear();
stream << "****";
cout << stream.str() << endl;
return 0;
}
generuje moc
Test
Test----
Test----****
To daje mi problem, ponieważ mam do utworzyć wiele wystąpień z ostringstream
, co jest marnotrawstwem. Najwyraźniej clear()
i flush()
nie rób tego, czego potrzebuję, więc czy istnieje sposób, aby to zrobić? Sprawdziłem dokumentację pod numerem http://www.cplusplus.com/reference/iostream/ostringstream/, ale nie ma tam niczego, co wydaje się robić to, czego potrzebuję. Czy istnieje sposób na zresetowanie lub wyczyszczenie strumienia?
+1: miał powiedzieć dokładnie to samo rzecz. Chociaż robienie 'stream.str (" ");' zawsze było dla mnie hackem. –
Ogólnie zgadzam się z twoim wpisem, z wyjątkiem części, która zaczyna się od * Lub jeszcze lepiej: * i reszty, która następuje. Nie mógłbyś chyba myśleć, że to jest ** lepsze **, prawda ?! –
@HappyGreenKidNaps: To tylko przykład. Oczywiście możesz napisać 'std :: cout << 10' i skończyć z tym. Gdybym potrzebował napisu, powiedziałbym, że 'std :: to_string (10)', przypuszczam. –