[C++] Zapisywanie znaków włącznie ze spacją
Ostatnio zmodyfikowano 2015-01-15 19:11
remik666 Temat założony przez niniejszego użytkownika |
[C++] Zapisywanie znaków włącznie ze spacją » 2015-01-14 19:33:31 Witam, na początek chciałem się przywitać na nowym forum ;)) Miałem zrobić program na zaliczenie przedmiotu, lecz mam mały problem, mianowicie program działa, lecz po wpisaniu jakiejkolwiek nazwy ze spacją, wpis rozdziela na 2 osobne wpisy (np. jak wpiszę imię i nazwisko ze spacją to zapisuje jako imię pierwszy człon a to co jest za spacją przypisuje do kolejnego wpisu). Wiem, że odpowiedzialna za to jest funkcja getline ale nie mogę jakoś jej wdrążyć prawidłowo, tak aby program po skompilowaniu działał, siedzę już nad tym n-tą godzinę i nie mam zielonego pojęcia ocb. #include <iostream> #include <conio.h> #include <string> #include <fstream>
using namespace std;
struct klienci { string imie; string adres; string adres1; string nip; };
short i; klienci klienci[ 200 ];
void Dodaj(); void Zobacz(); void Zapisz(); void Wczytaj(); void Usun(); void Edytuj();
int main() { cout << "******************************\n" "*******Lista klient\242w*********\n" "*****Adrian Krawczy\344ski*******\n" "******************************\n"; cout << "\n\n\n"; char wybor; do { cout << "Aktualnie posiadasz " << i << " Klient\242w" << endl; cout << "1. Dodaj klienta " << endl; cout << "2. Zobacz wszystkich klient\242w " << endl; cout << "3. Zapisz wprowadzonych klient\242w " << endl; cout << "4. Wczytaj klient\242w z bazy " << endl; cout << "5. Usun klienta " << endl; cout << "6. Edytuj klienta " << endl; cout << "ESC - Koniec programu " << endl << endl; wybor = _getch(); switch( wybor ) { case 49: Dodaj(); break; case 50: Zobacz(); break; case 51: Zapisz(); break; case 52: Wczytaj(); break; case 53: Usun(); break; case 54: Edytuj(); break; } system( "cls" ); } while( wybor != 27 ); return 0; } void Dodaj() { cout << "Imi\251 i nazwisko/nazwa firmy: \n"; cin >> klienci[ i ].imie; cout << "Ulica: \n"; cin >> klienci[ i ].adres; cout << "Kod pocztowy i miasto: \n"; cin >> klienci[ i ].adres1; cout << "NIP: \n"; cin >> klienci[ i ].nip; cin.ignore(); i++; cout << ". Wcisnij enter"; getchar(); } void Zobacz() { if( i != 0 ) { for( short j = 0; j < i; j++ ) { cout << "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" << endl; cout << "x Klient nr " << j + 1 << ": " << endl; cout << "x Nazwa: " << klienci[ j ].imie << endl; cout << "x Ulica: " << klienci[ j ].adres << endl; cout << "x Kod pocztowy i miasto: " << klienci[ j ].adres1 << endl; cout << "x NIP: " << klienci[ j ].nip << endl; cout << "x"; cout << "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" << endl; } } else cout << "Nie ma takiego klienta w bazie!!"; cout << "Nacisnij ENTER"; getchar(); }
void Zapisz() { ofstream plik( "klienci.txt", ios::out | ios::trunc ); plik << i << "\n"; for( short j = 0; j < i; j++ ) { plik << klienci[ j ].imie << endl; plik << klienci[ j ].adres << endl; plik << klienci[ j ].adres1 << endl; plik << klienci[ j ].nip << endl; } cout << "Dane zostaly zapisane! :). Wcisnij ENTER"; getchar(); }
void Wczytaj() { ifstream plik( "klienci.txt", ios::in ); plik >> i; short j = 0; do { plik >> klienci[ j ].imie; plik >> klienci[ j ].adres; plik >> klienci[ j ].adres1; plik >> klienci[ j ].nip; j++; } while( !plik.eof() ); cout << "Wczytano dane. Nacisnij ENTER!"; getchar(); }
void Usun() { short kogo; if( i != 0 ) { cout << "Podaj numer klienta ktorego chcesz usunac: "; cin >> kogo; cin.ignore(); if( kogo > i ) cout << "Operacja nie powiodla sie. Brak klienta o takim numerze"; else { for( short k = kogo; k < i; k++ ) { klienci[ k - 1 ].imie = klienci[ k ].imie; klienci[ k - 1 ].adres = klienci[ k ].adres; klienci[ k - 1 ].adres1 = klienci[ k ].adres1; klienci[ k - 1 ].nip = klienci[ k ].nip; } i--; cout << "Operacja zakonczyla sie sukcesem! klient o numerze " << kogo << " zostal usuniety!"; Zapisz(); } } else { cout << "Nie ma klientów w bazie!! Wcisnij ENTER!"; getchar(); } }
void Edytuj() { int kogo; if( i != 0 ) { cout << "Podaj numer klienta ktora chcesz zmienic: "; cin >> kogo; cin.ignore(); if( kogo > i ) cout << "Operacja nie powiodla sie. Brak klienta o takim numerze"; else { cout << "Podaj nazw\251 klienta: \n"; cin >> klienci[ kogo - 1 ].imie; cout << "Podaj adresy: \n";; cin >> klienci[ kogo - 1 ].adres; cout << "Podaj kod pocztowy i miasto: \n"; cin >> klienci[ kogo - 1 ].adres1; cout << "Podaj nip: \n"; cin >> klienci[ kogo - 1 ].nip; cout << "Operacja zakonczyla sie sukcesem! klient o numerze " << kogo << " zosta\210 zmieniony!"; Zapisz(); } } else { cout << "Nie ma klient\242w w bazie!! Wcisnij ENTER!"; getchar(); } }
|
|
killermannnnn |
» 2015-01-14 20:18:11 U mnie na takim czyś działa: getline( cin, klienci[ i ].imie ) Pokaż twoje wdrożenie getline to zobaczymy gdzie robisz błąd |
|
remik666 Temat założony przez niniejszego użytkownika |
» 2015-01-15 19:11:24 Błachy powód... zapomniałem przecinka po cin ;]
Dzięki za pomoc ;) |
|
« 1 » |