pisanie i odczytywanie łańcucha do pliku binarnego C ++
Mam problem z zapisaniem ciągu znaków do pliku binarnego. To jest mój kod:
ofstream outfile("myfile.txt", ofstream::binary);
std::string text = "Text";
outfile.write((char*) &text, sizeof (string));
outfile.close();
Potem próbuję to przeczytać
char* buffer = (char*) malloc(sizeof(string));
ifstream infile("myfile.txt", ifstream::binary);
infile.read(buffer, sizeof (prueba));
std::string* elem = (string*) buffer;
cout << *elem;
infile.close();
Po prostu nie mogę zmusić tego do pracy. Przepraszam, jestem po prostu zdesperowany. Podziękować!
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
7 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
to nie jest właściwe
nie zwraca długości ciągu, zwraca rozmiar typu string w bajtach.
również nie rzutuj tekstu na używając rzutowania C, możesz uzyskać dostęp do char * używając odpowiedniej funkcji składowej możesz po prostu napisać
zamiast.
Anonimowy użytkownik
Potwierdzenie od:
Aby go przeczytać, odwróć proces, najpierw zmieniając rozmiar wiersza, aby mieć wystarczająco dużo miejsca:
Ponieważ linie mają zmienny rozmiar, jeśli nie zmieścisz tego rozmiaru w pliku, nie będziesz w stanie uzyskać tego dobrze. Możesz polegać na znaczniku „\ 0”, który na pewno znajduje się na końcu ciągu c, lub równoważnym wywołaniu string :: c_str (), ale nie jest to dobry pomysł, ponieważ
1. musisz czytać znak po znaku w ciągu, sprawdzając wartość null
2. a std :: string może legalnie zawierać bajt null (chociaż naprawdę nie powinien, ponieważ wywołania c_str () są wtedy mylące).
Anonimowy użytkownik
Potwierdzenie od:
Musisz spróbować:
lub
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
napisz plik w formacie binarnym
https://coderoad.ru/43602649/
Kluczowe pytania: użyj string :: length, aby uzyskać długość ciągu podczas pisania, i użyj resize () przed odczytaniem ciągu. Zarówno do czytania, jak i pisania użyj mystring.c_str () zamiast samego ciągu.
Anonimowy użytkownik
Potwierdzenie od:
Tutaj
http://cplus.about.com/od/lear ... 2.htm
dobry przykład.
Anonimowy użytkownik
Potwierdzenie od:
a błąd rozszerzenia pliku, który próbujesz odczytać, poprawny kod to
Napisz do pliku
odczyt pliku
Wypróbuj ten, zadziała