Mam wiele klas C++, które odczytują dane ze strumienia plików. Funkcje wyglądają tak.C++ konwertowanie funkcji strumienia plików na strumień łańcuchowy
bool LoadFromFile(class ifstream &file);
Tworzę nową funkcję do odczytu z pamięci zamiast z pliku. Więc szukałem informacji w Google i wydaje mi się, że istringstream robi to bez żadnych modyfikacji kodu.
bool LoadFromData(class istringstream &file);
Teraz moje pytanie jest. Muszę skonstruować ten strumień, aby odczytać z tablicy znaków. Łańcuch nie jest zakończony znakiem NUL, to czyste dane binarne i mam liczbę całkowitą o rozmiarze. Próbowałem przypisać go do napisu i utworzyć strumień z łańcucha, jednak ciąg znaków kończy się po znaku pustym .. i dane są kopiowane.
int size;
char *data;
string s = *data;
Jak utworzyć ciąg znaków ze wskaźnika tablicy znaków bez kopiowania danych + określając rozmiar danych wskaźnika? Czy znasz jakieś inne rozwiązanie niż stringstream?
Wyjaśnienie: Czy Twój problem polegał na tym, że twój znak "char *" nie ma wartości null, a zatem masz problem z skonstruowaniem 'std :: string' z tego? – quasiverse
Tak, to jest podstawowy problem. Zastanawiam się też, czy ktoś wie lepsze rozwiązanie. – Tito
Oto możliwe rozwiązanie: http://stackoverflow.com/questions/2079912/simpler-way-to-create-ac-memorystream- from-char-size-t- without -copying-th (jedna wersja używa doładowania, na kopiach danych i jeden działa tylko z gcc) –