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

Problem z plikami

Ostatnio zmodyfikowano 2011-02-05 22:36
Autor Wiadomość
Tymek
Temat założony przez niniejszego użytkownika
Problem z plikami
» 2011-02-05 22:07:51
C/C++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    string bufor;
    ifstream in( "plik1.txt", ios::in );
    ofstream out1( "plik2.txt", ios::in | ios::out );
    ofstream out2( "plik3.txt", ios::in | ios::out );
   
    int i = 1;
    cin >> bufor;
    while( getline( in, bufor ) )
    {
        if( i % 2 == 0 )
             out2 << bufor << endl;
        else
             out1 << bufor << endl;
       
        i++;
    }
   
    in.close();
    out1.close();
    out2.close();
}
Ma tutaj pokazywać w 2 pliku wiersze parzyste , a w 3 nie parzyste.
tylko w plikach tego mi nie chce pokazać nie mam pojęcia dlaczego.
P-27862
dmx81
» 2011-02-05 22:18:10
pierwsze - czy potrzebujesz aby out1 i out2 byly otwierane do odczytu? bo nie musisz dodawac nic w argumentach - ifstream ma domyslnie ios::in, a ofstream  ios::out,

po drugie, co wpisujesz przez cin>>bufor? potrzebujesz tego?

ps. dodaj tez sprawdzanie, czy plik otworzony
P-27863
Tymek
Temat założony przez niniejszego użytkownika
» 2011-02-05 22:27:13
C/C++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    string bufor;
    ifstream in( "plik1.txt" );
    ofstream out1( "plik2.txt" );
    ofstream out2( "plik3.txt" );
   
    int i = 1;
    cin >> bufor;
    while( getline( in, bufor ) )
    {
        if( i % 2 == 0 )
             out2 << bufor << endl;
        else
             out1 << bufor << endl;
       
        i++;
    }
   
    in.close();
    out1.close();
    out2.close();
}
Chciałem coś wpisać w buffor żeby było coś widać w plikach .
P-27864
dmx81
» 2011-02-05 22:27:19
u siebie zrobilem wg tego, co napisalem powyzej, tzn usunalem te ios::in | ios::out i dziala (podstawilem sobie przykladowy plik tekstowy i kopiuje mi do pozostalych dwoch kolejno parzyste lub nieparzyste wiersze

ps do twojej odpowiedzi:

wpisujesz do stringa, ale nie zapisujesz tego do pliku - a pozniej nadpisujesz to co masz w stringu tym, co wczytujesz z plik1.
jesli u ciebie plik1.txt nie istnieje (lub istnieje, ale jest pusty, bez tekstu - to nie sprawdzisz czy dziala)
musisz miec plik1.txt w katalogu z programem - najlepiej zeby mial zapisane conajmniej kilka linii, plik2 i plik3 powstana same

jesli chcesz, aby dzielone bylo na pliki to, co sam napiszesz, a nie to, co wczytasz z pliku - to najpierw albo zapisuj to, co napiszesz do innego pliku (ale wtedy cin>>string musisz wrzucic do petli - bo inaczej wpiszesz pojedyncza linie tekstu)
mozesz tez zapisac zamiast do pliku, do innego stringa - rowniez w petli - pamietaj, jeden wpis = jedna linia, jesli w petli bedziesz wpisywal ciagle do tego samego stringa, to bedziesz go wciaz nadpisywal (najlepiej wpisywac cos do string1, dodawac to do string2, po czym znow wpisac do string1 itd) a nastepnie string2 podzielisz sobie na pliki. wazna informacja - po kazdym dodaniu string1 do string2, musisz ponownie dodac znak "\n", poniewaz do stringa nie zapisze ci entera - wiec string2 bylby ciaglym tekstem z pominietymi znakami nowej linii
P-27865
Tymek
Temat założony przez niniejszego użytkownika
» 2011-02-05 22:36:32
działa , dzięki za pomoc
P-27866
« 1 »
  Strona 1 z 1