Skocz do zawartości
Puchacz1

[c++] błąd podczas kompilacji

Rekomendowane odpowiedzi

mam taki oto prosty program który pod środowiskiem kompiluje się poprawnie (ale przy uruchamianiu wyrzuca: terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct NULL not valid ) natomiast przy kompilacji (g++ -Wall -pedantic -o nazwa nazwa.cpp) wyrzuca jakieś niezrozumiałe instrukcje których tu nie będę przytaczał bo jest tego bardzo dużo.Powiedzcie co robię źle.

 

#include <iostream>#include <fstream>#include <string>using namespace std;struct Osoba{    string nazwisko;    string imie;    string wiek;};bool wczytaj(string &nazwa, Osoba *&dane, int &ile){    ofstream plik;    plik.open(nazwa.c_str(), ios::in | ios::out);    plik << ile;    if(ile!=0)    {        dane = new Osoba [ile];        for(int i=0; i<ile; ++i)        {            if(plik.good())            {                plik << dane[i].imie << dane[i].nazwisko << dane[i].wiek;            }        }        return 1;    }    else    {        cerr << "Pusty plik bądź brak informacji o rozmiarze";        return 0;    }}void wypisz(ostream &plik, Osoba &dane){    plik << dane.imie << dane.nazwisko << dane.wiek;}int main(int argc, char *argv[]){    string pl_wej(argv[1]);    string pl_wyj(argv[2]);    int ile;    //    Osoba *dane;    if(!wczytaj(pl_wej, dane, ile))    {        cerr << "[gluteus maximus] zbita";    }    wypisz(cout, dane[2]);    return 0;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przypisujesz zero do obiektu string, podajesz konstruktorowi pusty łańcuch C, który zawiera wyłącznie NULL. Sprawdź: string foo('\0'); oraz string bar = 0;. Zainicjalizuj zmienne ile i pl_wej. Dlaczego nie używasz fstream?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...