Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Odczyt/zapis danych binarnych do pliku

Ostatnio zmodyfikowano 2011-08-12 11:57
Autor Wiadomość
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ą
ios::binary
.

Jak to zrobić?
A później ją odczytać jako wartość zmiennej typu int?
Kurs niestety jest (dla mnie przynajmniej) nie jasny.
P-38917
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
P-38919
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

C/C++
#include <iostream>
#include <fstream>


using namespace std;


int main()
{
   
    fstream plik;
   
    int a = 123;
   
    plik.open( "liczba.txt", ios::out | ios::app | ios::binary ); //zapisuje na koncu
   
    plik.write( & a, sizeof( int ) ); //tutaj jest źle  
    plik.close();
   
   
   
    plik.open( "test.txt", ios::in );
    plik >> a;
    cout << "moja liczba to" << a;
    plik.close();
    return 0;
}
P-38920
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:
C/C++
char buf[ 10 ];

itoa( a, buf, 10 );

plik.write( buf, sizeof( int ) );
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
P-38921
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?
P-38922
SeaMonster131
» 2011-08-12 10:56:35
Napisałem już, jak powinieneś zrobić :) Czyli użyć funkcji
itoa();
 :)

// Yea, mój 1000 post heheh :)
P-38923
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"
 
C/C++
#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 ); //zapisuje na koncu
    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;
}
P-38928
pekfos
» 2011-08-12 11:28:14
On chyba chce binarnie zapisać...
P-38930
« 1 » 2
  Strona 1 z 2 Następna strona