Problem z plikami
Ostatnio zmodyfikowano 2011-02-05 22:36
Tymek Temat założony przez niniejszego użytkownika |
Problem z plikami » 2011-02-05 22:07:51 #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. |
|
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 |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-02-05 22:27:13 #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 . |
|
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 |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-02-05 22:36:32 działa , dzięki za pomoc |
|
« 1 » |