Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

14.02.2009, 23:31

String prüfen.

Hallo,
ich habe mir eine Funktion geschrieben die einen String auf bestimmt Zeichen prüft.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
do
    {

    
    cout<<endl;
    cout<<"E-Mail Adresse:";
    cin.ignore ();
    getline (cin,m_sMail);
    
     
    

    if (m_CheckMail (m_sMail)==false)
    {
       
       cout<<"Bitte versichern sie sich das sie eine gültige E-Mail Adresse eingegeben haben"<<endl;
    }
    
    
    }while (m_CheckMail(m_sMail)==false);




Eigentliche Funktion:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool CKunde::m_CheckMail(string sMail)
{

//Prüft eine E-Mail Adresse auf ihre gültigkeit

    
//Prüfe ob das @ Zeichen vorhanden ist

sMail.find ("@",0);


if (string::npos)
{
return false;
}

else 
return true;

}



Allerdings endet die Schleife nie.

2

14.02.2009, 23:37

und du hast >500 posts...

Schonmal debuggt?! Oder einfach nochmal den Post durchgelesen bevor du ihn abgeschlossen hast?

Gruß
Markus

3

14.02.2009, 23:38

string::npos ist eine Konstante mit einem Wert ungleich 0, daher wird deine Prüffunktion IMMER false zurückgeben.
Lieber dumm fragen, als dumm bleiben!

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

4

14.02.2009, 23:39

Warum macht der Code absolut keinen Sinn? Da bin ich anderer Meinung ...

Ich denke deine Funktion müsste etwa so aussehen:

C-/C++-Quelltext

1
2
3
4
5
bool CKunde::m_CheckMail(string sMail)
{
   //Prüft eine E-Mail Adresse auf ihre gültigkeit

   return sMail.find ("@",0) != string::npos;
}



Zitat von »"qwertzui11"«

und du hast >500 posts...

Schonmal debuggt?!

Demnächst traut er sich dann garnicht mehr zu fragen ;)
<< an dieser Stelle ist eine Signatur verstorben >>

5

15.02.2009, 10:44

Errschaffer, informierst du dich eigentlich über die Funktionen, die du benutzt? Scheint nicht so, aber ich würde es dennoch empfehlen. Zum Beispiel auf www.cplusplus.com...

Mal abgesehen von der Tatsache, dass du sehr viel redundanten Code hast. Die Do-While-Schleife ist fragwürdig, wenn du die Bedingung innerhalb nochmals prüfen musst, boolsche Ausdrücke müssen nicht explizit auf Gleichheit mit true oder false abgefragt werden und If-Abfragen, bei denen ein Zweig true und der andere false zurückgibt, kann man sich auch sparen.

Anonymous

unregistriert

6

15.02.2009, 11:59

Re: String prüfen.

Zitat von »"Errschaffer"«


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
do
    {

    
    cout<<endl;
    cout<<"E-Mail Adresse:";
    cin.ignore ();
    getline (cin,m_sMail);
    
Ich habe dir vor sowas schon X mal eine Methode gegeben. Warum benutzt du die nicht? Magst du Tipparbeit? Den Rest haben die Anderen ja schon beantwortet.

Werbeanzeige