[C++] Zapis do pliku białych znaków
Ostatnio zmodyfikowano 2010-06-26 14:03
choke Temat założony przez niniejszego użytkownika  | 
[C++] Zapis do pliku białych znaków » 2010-06-25 20:23:30 Witam poniżej przedstawię kod mojego programu chodzi mi o zapis do pliku w case 2 wszytko działa tylko gdy pisze imię i nazwisko np Kamil Nowak zapisuje sie tylko Kamil i jest tak ze wszystko zapisuje się do napotkania białego znaku i nie wiem jak to robić #include <cstdlib> #include <iostream> #include <string> #include <fstream>
 
  using namespace std;
  int main() {     int wybor = 0;     while( wybor < 5 )     {         cout << "+---------------------------------------------+" << endl;         cout << "|Ksiazka adresowa ver 1.0                     |" << endl;         cout << "|Projekt na zaliczenie autor Piotr P          |" << endl;         cout << "+---------------------------------------------+\n\n" << endl;         cout << "Menu wyboru:\n" << endl;         cout << "1 Przegladaj ksiazke adresowa" << endl;         cout << "2 Dodaj wpis do ksiazki adresowej" << endl;         cout << "3 Usun wpisy z ksiazki adresowej" << endl;         cout << "4 Wyjscie z programu\n" << endl;                  cout << "Twoj wybor: ";         cin >> wybor;                  if( wybor == 1 || wybor == 2 || wybor == 3 || wybor == 4 || wybor == 5 )         {                          switch( wybor )             {             case 1:                                  {                     fstream plik;                     plik.open( "1.txt", ios::in );                     if( plik.good() )                     {                         string ka;                                                  while( !plik.eof() )                         {                             getline( plik, ka );                             cout << ka << endl;                         }                         plik.close();                     } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;                                      }                 break;             case 2:                 {                     string imie, ulica, miasto, tele;                     ofstream plik;                                          plik.open( "1.txt", ios::out | ios::app );                                          {                         cout << "Imie i Nazwisko : ";                         cin >> imie;                         cout << "Ulica : ";                         cin >> ulica;                         cout << "Miasto : ";                         cin >> miasto;                         cout << "Nr telefonu : ";                         cin >> tele;                     }                     plik << imie << endl << ulica << endl << miasto << endl << tele << endl;                     plik.close();                 }                 break;             case 3:                 {                                          fstream plik;                     plik.open( "1.txt", ios::trunc | ios::in | ios::out );                     plik.close();                                                           }                 break;             case 4:                                  return EXIT_SUCCESS;                              }             system( "PAUSE" );             system( "cls" );                      } else              cout << "Nieprawidlowy wybor\n";              }          system( "PAUSE" );     return EXIT_SUCCESS; }  | 
 | 
SeaMonster131  | 
» 2010-06-25 21:16:34 Otaguj swój kod w "[ code src="C++" ] ... [ /code ]" (bez spacji):D A co do Twojego problemu musisz użyć np getline. Sposób użycia:  string cos; cout << "Wpisz jakies zdanie:  "; getline( cin, cos ); cout << "Napisales podane zdanie: " << cos;
 
 
 No i to chyba wszystko :D  | 
 | 
choke Temat założony przez niniejszego użytkownika  | 
» 2010-06-25 21:20:51 Próbowałem już tak i nie przechodzi :/  | 
 | 
SeaMonster131  | 
» 2010-06-25 21:29:18 Faktycznie getline() nie działa prawidłowo :/ Zaraz dojde co w tym jest źle ;) (Lubie tak główkować :D)
  #edit: nie możesz dać wszystko osobno? Wtedy nie miałbyś problemu :P
  #edit2: Naprawde sorry, ale nie wiem czemu jest źle :/ Może sam na to wpadniesz albo ktoś mądrzejszy ode mnie napisze Ci co jest źle :D W każdym razie Powodzenia! :)  | 
 | 
SeaMonster131  | 
» 2010-06-25 21:54:48 Yeah! Działa :D:D:D Poczytałem na jakimś forum ;) Powinno być tak: cout << "Imie i Nazwisko : "; cin.ignore(); getline( cin, imie ); cout << "Ulica : "; getline( cin, ulica ); cout << "Miasto : "; getline( cin, miasto ); cout << "Nr telefonu : "; getline( cin, tele ); Przed pierwszym wywołanie "getline();" muisz dać "cin.ignore();" - i wszystko działa:D No to powodzenia! :)  | 
 | 
filipesq  | 
» 2010-06-26 10:21:21 A t nowość, ja nigdy nie dawałem ignor(), a getline() działało...  | 
 | 
ison  | 
» 2010-06-26 11:45:07 bo w tym programie najpierw używałeś cin a potem getline. W tym przypadku tam gdzie wczytywałeś przez getline wczytywany był enter który wcisnąłeś po wpisaniu pierwszej zmiennej.  | 
 | 
choke Temat założony przez niniejszego użytkownika  | 
» 2010-06-26 14:03:19 SeaMonster131 jesteś wielki tyle ile ja nad tym siedziałem to po prostu masakra :) Ale i tak mam jeszcze jedna sprawę chodzi o to ze jak już zapisze do pliku w takiej formie Pietraszek Piotr 1 Maja 54/83 Dabrowa Gornicza Nr tel : 793222367 ------------------ Kamil Nowak Legionow Polskich 137/8 Dabrowa Gornicza Nr tel : 515457789 ------------------ Bartek Lis Obroncow Montekasino 48/78 Sosnowiec Nr tel : 789545154
  Mam zrobic case w którym będę kasował poszczególne rekordy zeby wyglądało tak : Pietraszek Piotr 1 Maja 54/83 Dabrowa Gornicza Nr tel : 793222367 ------------------ Kamil Nowak Legionow Polskich 137/8 Dabrowa Gornicza Nr tel : 515457789 ------------------
  Bo inaczej będę mieć 3,5 :) bo za 4 będę miał przepis z jeszce jednego przedmitu :)  | 
 | 
|  « 1 »  |