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

[C++] Zapis do pliku białych znaków

Ostatnio zmodyfikowano 2010-06-26 14:03
Autor Wiadomość
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ć

C/C++
#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;
}
P-18326
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:
C/C++
//...
string cos;
cout << "Wpisz jakies zdanie:  ";
getline( cin, cos );
cout << "Napisales podane zdanie: " << cos;
//...
No i to chyba wszystko :D
P-18332
choke
Temat założony przez niniejszego użytkownika
» 2010-06-25 21:20:51
Próbowałem już tak i nie przechodzi :/
P-18333
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! :)
P-18335
SeaMonster131
» 2010-06-25 21:54:48
Yeah! Działa :D:D:D
Poczytałem na jakimś forum ;)
Powinno być tak:
C/C++
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! :)
P-18337
filipesq
» 2010-06-26 10:21:21
A t nowość, ja nigdy nie dawałem ignor(), a getline() działało...
P-18342
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.
P-18343
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 :)
P-18345
« 1 »
  Strona 1 z 1