2009-10-13 21 views
6

Czytam w pliku binarnym za pomocą zwykłej składni C++/STL/iostream. Kopiuję całą zawartość do dynamicznie przydzielonej tablicy znaków i działa to do tej pory.memorystream - stringstream, string, others?

ale ponieważ chcę służyć części zawartości jako linii do innej części programu, myślę, że byłoby lepiej/łatwiej trzymać się strumieniami, bo nie chcą włamać się wokół z funkcjami i CString wskaźniki.

Moje pytanie brzmi: jak mogę zapisać odczyt w pamięci. w strumieniu sznurkowym? lub w ciągu? który pasuje lepiej? czy są jakieś zalety lub wady jednej nad drugą?

z góry dzięki!

+0

ok, kopiowanie jest łatwe po przeczytaniu tego http://stackoverflow.com/questions/132358/how-to-read-file-content-into-istringstream to (jeśli to prawda) również stwierdza, że ​​stringstreams wewnętrzny buffer to ciąg znaków (stąd nazwa chyba). jak mogę zarezerwować bajty dla tego bufora - nie widziałem żadnej notatki na ten temat w ctor ani nic w sprawie funkcji rezerwy ... – didito

Odpowiedz

4

Jeśli chcesz dowiedzieć się od niego w postaci strumienia, równie dobrze można odczytać bezpośrednio z pliku do stringstream:

std::stringstream data; 
data << input_file.rdbuf(); 

który odczytuje całą zawartość „input_file” do „danych”. Możesz odczytać dane stamtąd tak jak każdy inny strumień.

+0

dzięki, już to mam. pytanie brzmi teraz: czy mądrze jest przechowywać strumień string jako rodzaj bufora pamięci/znakowania w mojej klasie? czy powinienem użyć ciągu? – didito

+0

a co ze std :: stringbuf? – didito

+0

Brak konkretnego powodu, aby zrobić inaczej, po prostu przechowywał stringstream. –

Powiązane problemy