[C++]Wczytywanie i zapisywanie danych typu string do pliku

palcedavosa12
Użytkownik
Użytkownik
Posty: 14
Rejestracja: 29 sty 2017, o 15:42
Płeć: Mężczyzna
Lokalizacja: Częstochowa
Podziękował: 1 raz

[C++]Wczytywanie i zapisywanie danych typu string do pliku

Post autor: palcedavosa12 »

Zadanie zakłada, że mam napisać funkcje która dokona
odczytania danych ze strumienia plikowego przekazanego, jako parametr wywołania
funkcji

wyselekcjonowania adresów email (sprawdzenie czy wystepuje znak @),

zapisanie tych adresów (rozdzielonych srednikiem) do strumienia plikowego przekazanego
jako drugi parametr funkcji.

Kod: Zaznacz cały

#include <iostream>
#include <cstring>
#include <fstream>

using namespace std;

void fun1(istream &is, ofstream & plik)
{
    char* nazwa;

    
    is>>nazwa;

    ifstream wejscie(nazwa);
    unsigned liczba_maili=0;

    while(!wejscie.eof())
   {

    string linia;
    wejscie>>linia;


        int dlugosc = linia.length();
        for(unsigned int i=0;i<dlugosc;i++)
        {
            if(linia[i]=='@')
            {
                liczba_maili++;
            }
            plik<<linia<<";"<<endl;

        }
        dlugosc=0;
    }
    if(liczba_maili==0) cout<<"Nie znaleziono zadnych maili"<<endl;
    else  cout<<" Znaleziono "<<liczba_maili<<" maili"<<endl;
    wejscie.close();
}

int main()
{

   ofstream plik("out.txt");
   fun1(cin, plik);

    return 0;
}
Kod kompiluje się, lecz przestaje działać po wpisaniu nazwy pliku wejsciowego, mimo tego ze jest poprawny. Nie wiem za bardzo co ruszyć.
qwertghjio
Użytkownik
Użytkownik
Posty: 66
Rejestracja: 5 paź 2016, o 14:54
Płeć: Mężczyzna
Lokalizacja: pzn
Podziękował: 3 razy

[C++]Wczytywanie i zapisywanie danych typu string do pliku

Post autor: qwertghjio »

Nie zamykasz nigdzie strumienia ofstream plik. Jednak to ci tego nie powoduje. Po co wywołujesz funkcję z argumentem cin? Według mnie nad tym powinieneś się zastanowić, a jak nie jesteś pewien to możesz zawsze odpalić tryb debugowania i sprawdzić gdzie dokładnie leży problem.
ODPOWIEDZ