Wczytywanie pliku i błąd 'no match for operator'
Ostatnio zmodyfikowano 2018-08-19 18:21
konto_usunięte Temat założony przez niniejszego użytkownika |
Wczytywanie pliku i błąd 'no match for operator' » 2018-08-17 09:42:44 Witam Piszę prosty program bazy danych, która ma być wczytywana z pliku. Mam w nim taką strukturę: struct osoba { char imie[ 20 ]; char nazwisko[ 30 ]; char miejscowosc[ 20 ]; }
I chciałbym do niej wczytać wartości z pliku: void Wczytaj() { ifstream plik; plik.open( "baza.dat", ios::in ); if( plik.fail() ) { plik.close(); return; } plik >> ile_osob; for( int i = 1; i < ile_osob; i++ ) { plik >> Baza[ i ].imie; plik >> Baza[ i ].nazwisko; plik >> Baza[ i ].miejscowosc; } }
EDIT: zapomniałem: Baza[] to: struct osoba Baza[ 100 ];
Kompilator wywala: [Error] no match for 'operator>>' (operand types are 'std::ifstream {aka std::basic_ifstream<char>}' and 'int [10]') i zaznacza: Co tu jest źle? Proszę o pomoc |
|
pekfos |
» 2018-08-17 14:11:53 Podaj cały kod. |
|
konto_usunięte Temat założony przez niniejszego użytkownika |
» 2018-08-19 10:31:03 #include <iostream>
#include <conio.h> #include <fstream> #include <windows.h>
using namespace std;
int ID0;
struct osoba { char imie[ 20 ]; char nazwisko[ 30 ]; char miejscowosc[ 20 ]; }; struct osoba Baza[ 1024 ];
void Zapisz() { ofstream plik; plik.open( "baza.dat", ios::out ); if( plik.fail() ) { plik.close(); return; } plik << ID0; for( int i = 1; i < ID0; i++ ) { plik << Baza[ i ].imie; plik << Baza[ i ].nazwisko; plik << Baza[ i ].miejscowosc; } }
void Wczytaj() { ifstream plik; plik.open( "baza.dat", ios::in ); if( plik.fail() ) { plik.close(); return; } plik >> ID0; for( int i = 1; i < ID0; i++ ) { plik >> Baza[ i ].imie; plik >> Baza[ i ].nazwisko; plik >> Baza[ i ].miejscowosc; } }
void DodajOs() { }
void UsunOs() { }
void WyswietlB() { }
void Szukaj() { }
bool Menu() { system( "cls" ); cout << "[1] Dodaj osobe"; cout << "[2] Usun osobe"; cout << "[3] Wyswietl baze"; cout << "[4] Szukaj osoby"; cout << "[5] Wyjdz"; int kl = getch(); switch( kl ) { case 49: DodajOs(); case 50: UsunOs(); case 51: WyswietlB(); case 52: Szukaj(); case 53: return false; } }
int main() { system( "cls" ); cout << "Wczytywanie danych..."; Wczytaj(); bool start = true; while( start == true ) { start = Menu(); } }
|
|
pekfos |
» 2018-08-19 18:21:47 To nie jest właściwy kod do podanego błędu. Ten się kompiluje. char imie[ 20 ]; char nazwisko[ 30 ]; char miejscowosc[ 20 ]; |
Albo używaj std::string, albo użyj wczytywania zabezpieczonego przed przepełnieniem bufora. |
|
« 1 » |