mykosik Temat założony przez niniejszego użytkownika |
Odczyt/zapis danych binarnych do pliku » 2011-08-12 10:13:34 Witam , Chę zapisać wartość zmiennej typu int do pliku dane.txt metodą binarną . Jak to zrobić? A później ją odczytać jako wartość zmiennej typu int? Kurs niestety jest (dla mnie przynajmniej) nie jasny. |
|
SeaMonster131 |
» 2011-08-12 10:26:09 np plik >> zmienna_liczbowa; ? Musisz otworzyć plik w trybie binarnym po prostu, wczytywanie i zapisywanie wygląda tak samo.. ;p |
|
mykosik Temat założony przez niniejszego użytkownika |
» 2011-08-12 10:33:01 Ale dlaczego wywala mi błąd w funcji write podaję adres i rozmiar a jest źle #include <iostream> #include <fstream>
using namespace std;
int main() { fstream plik; int a = 123; plik.open( "liczba.txt", ios::out | ios::app | ios::binary ); plik.write( & a, sizeof( int ) ); plik.close(); plik.open( "test.txt", ios::in ); plik >> a; cout << "moja liczba to" << a; plik.close(); return 0; }
|
|
SeaMonster131 |
» 2011-08-12 10:48:09 Wszystko masz w kursie: ostream & write( const char * bufor, streamsize ilosc_danych_do_zapisu ); W 1. argumencie tej funkcji jest const char * a nie int * Zrób tak: char buf[ 10 ];
itoa( a, buf, 10 );
plik.write( buf, sizeof( int ) ); http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ |
|
mykosik Temat założony przez niniejszego użytkownika |
» 2011-08-12 10:55:33 A więc ta funkcją write nie mogę zapisać liczby typu int? |
|
SeaMonster131 |
» 2011-08-12 10:56:35 Napisałem już, jak powinieneś zrobić :) Czyli użyć funkcji itoa(); :) // Yea, mój 1000 post heheh :) |
|
mykosik Temat założony przez niniejszego użytkownika |
» 2011-08-12 11:23:55 Rzeczywiście to Twój 1000 post - gratuluję Ok zapisać się zapisało ale teraz chciałbym odzczytac tę wartość i wychodza jakieś inne liczby Jak teraz otworzyć plik i odczytać? ja próbuje tak jak poniżej i po wyłączenieu zapisu a pozostawieniu odczytu nie zwraca wartości jaka podałem tylko jakaś długą liczbę , a chce odczytać ja taką jaką zapisałem czyli "123" #include <stdlib.h> #include <iostream> #include <fstream>
using namespace std;
int main() { fstream plik; int a = 123; plik.open( "liczba.txt", ios::out | ios::app | ios::binary ); char buf[ 10 ]; itoa( a, buf, 10 ); plik.write( buf, sizeof( int ) ); plik.close(); plik.open( "liczba.txt", ios::in ); itoa( a, buf, 10 ); plik.read( buf, 10 ); std::cout << "Wczytano " << plik.gcount() << " bajtów do bufora" << std::endl; cout << "moja liczba to" << a; plik.close(); return 0; }
|
|
pekfos |
» 2011-08-12 11:28:14 On chyba chce binarnie zapisać... |
|
« 1 » 2 |