C++ molim pomoc ;)

poruka: 5
|
čitano: 1.300
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
C++ molim pomoc ;)

Pozz,

 

evo radim nekakav log in sustav u cpp. i sad zelim kada se ulogiram da ja nesto napisem i da se to snimi u .txt file. ali napise se samo 1 rijec , tipa ako napisem " krave su bjele "   u .txt se pojavi samo krave i onda nekakvi brojevi. kako da dobijem cijelu recenicu?

 

lp       {#}

Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
C++ molim pomoc ;)

#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
using namespace std;



int main()
{

string line, x;
int z , q ;



string username1="Luka";
string username;

string password1="123";
string password;

loop:

cout << "Please type in your username: " ;
cout << endl;
cin >> username;

cout << "Please type in your password: " ;
cout << endl;
cin >> password;


if (password == password1 & username==username1)
{
cout << "Welcome. \n" ;
cout << "------------------------------------------------------------- \n" ;
cout << "Type what you want to save in notepad.txt! \n " ;

cin >> x ;
cin >> q ;


cout << x << q ;
ofstream examplefile ("DataBase1.txt");
if (examplefile.is_open())
{
examplefile << x;
examplefile << q;
examplefile.close();




/*
PREPISUJE TEKST IZ .TXT FAJLA!

ifstream myfile ("DataBase1.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}

system ("pause");
return 0;
// system("CLS") ;

}
*/
}
}
else
{
cout << "------------------------------------------------------ \n";
cout << "-- Please type in the correct username or password! -- \n";
cout << "------------------------------------------------------ \n";
cout << "\n";
cout << " Press: \n 1.Quit \n 2.Try again \n";
cin >> z ;
if (z==1)
{
system("CLS") ;
cout << "Goodbye! \n" ;
for (int brojac=5;brojac>=1;brojac--)

{

cout<<brojac<<". \n";
Sleep(500);

}

}
else if (z==2)
{
system("CLS") ;
goto loop;
}



}

}

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: C++ molim pomoc ;)

cin svakim pozivom pročita po jednu riječ, ako želiš kompletnu liniju u komadu onda koristi getline

 

i nemoj koristiti goto...

0xBADC0DE
Poruka je uređivana zadnji put pet 11.1.2013 3:03 (rustweaver).
13 godina
neaktivan
offline
C++ molim pomoc ;)

hmm , sto da stavim umjesto goto?

 

cek kako sa getline?

npr kad napisem samo ovo :

 

#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>

using namespace std;

int main () {
string str;
cout << "Please enter full name: ";
getline (cin,str);
cout << "Thank you, " << str << ".\n";

system ("pause");
}

 

onda radi getline ali u ovom vecem programu ne :( uopce me ne trazi unos kad napisem.

 

txh

Poruka je uređivana zadnji put pet 11.1.2013 3:33 (Orionn125).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Re: C++ molim pomoc ;)

Brojeve dobijes jer upisuješ varijablu q u datoteku (koja je neinicijalizirani int pa dobijes smece).

 

Umijesto goto mozes strukturirati malo program tako da ga podjelis u funkcije.

 

getline mozes natjerati da proradi tako da prije getline pozoves cin.sync() koji ce iscistiti sve zaostale znakove u bufferu.

 

I prelazis u novu liniju u stringu sa \n a ne sa n :)

 

Evo tvoj kod (vise manje) razlomljen u funkcije i bez goto u jednoj petlji.

 

    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <windows.h>
    using namespace std;
   
    int login()
    {
        string username, password;
        cout << "Please type in your username: ";
        cout << endl;
        cin >> username;
    
        cout << "Please type in your password: ";
        cout << endl;
        cin >> password;
       
        if (username == "Luka" && password == "123")
           return 1;
        else
            return 0;
    }
    void writeFile()
    {
         string x;
         cout << "Welcome. \n";
         cout << "------------------------------------------------------------- \n";
         cout << "Type what you want to save in notepad.txt! \n ";
   
         cin.sync();
         getline(cin,x);
         ofstream examplefile("DataBase1.txt");
         if (examplefile.is_open()) {
         examplefile << x;
         examplefile.close();
         }
    }
   
    int main()
    {
        int exit = 0;
        while (true)
        {
              if (login())
              {
                 writeFile();
                 break;
              }
              else
              {
                  cout << "------------------------------------------------------ \n";
                  cout << "-- Please type in the correct username or password! -- \n";
                  cout << "------------------------------------------------------ \n";
                  cout << "\n";
                  cout << " Press: \n 1.Quit \n 2.Try again \n";
                  cin >> exit;
              }
              if (exit == 1)
                 break;
        }
        return 0;
    }

Znaci imas beskonacni loop u main()

 

U njemu se poziva funkcija login koja obavlja provjeru podataka i vraca 1 ako je ok, 0 ako nije.

ako je sve u redu poziva se funkcija writeFile koja uzima tekst i pise datoteku te okoncava program, ako nije pita korisnika nastavak ili ne.

 

Sve zavrsavanje programa se obavlja jednostavno break-om koji prekida while petlju.

 

 

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice