2011-10-18 3 views
-1

Пожалуйста, помогите, у меня возникла проблема с подтверждением адреса электронной почты в этой программе, над которым я работаю . Мои последние две вещи - это ввести адрес электронной почты для [email protected] и номер телефона в формате xxx-xxx-xxxx. Вот код:проблема с проверкой электронной почты в C++

#include<iostream> 
using namespace std; 

class contact{ 
private: 
    string lname; 
    string fname; 
    string address; 
    string email; 
    string phonenumber;//bool checkphonenumber(string phonenumber) 

public: 
    void output(); 
    void input(); 
    bool checkemail(string email); 

    //constructor name has to be the same as class 
    contact(string contact_lname,//parameters 
      string contact_fname, 
      string contact_address, 
      string contact_phonenumber, 
      string contact_email ){ 

     lname = contact_lname; 
     fname = contact_fname; 
     address = contact_address; 
     phonenumber = contact_phonenumber;//bool checkphonenumber(string phonenumber) 
     email = contact_email; 
    } 
    contact(){//set all variables to null 
     lname = ""; 
     fname = ""; 
     address = ""; 
     phonenumber = ""; 
     email = ""; 
    } 
    //set 
    void setlname(string contact_lname){lname = contact_lname;} 
    void setfname(string contact_fname){fname = contact_fname;} 
    void setAddress(string contact_address){address = contact_address;} 
    //get 
    string getlname(){return lname;} 
    string getfname(){return fname;} 
    string getaddress(){return address;} 

};//end class 
//to prevent overload run function outside 
void contact::output() 
{ 
    cout << "Contact name is: " << fname <<" "<< lname <<endl; 
    cout << "Address is: " << address << endl;//address is not been filtered 
    cout << "Email Address is: " << email << endl; 


} 
bool contact::checkemail(string email) { 
    for(int a = 0; a < email.size(); a++) { 
     if(email.at(a) = '@') return true; 
    } 
    return false; 
} 
void contact::input(){ 
    cout<<"enter last name: "; 
    cin>>lname; 
    cout<<"enter first name: "; 
    cin>>fname; 
    cout<<"Enter address: "; 
    cin>>address; 
    cout<<"enter email "; 
    cin>>email; 
    while (!checkemail(email)) { 
     cout << "that is an invalid email address, re-entry email address." ; 
     cin>>email; 
    } 

    cout<<"enter phone number "; 
    cin>>phonenumber; 

} 
int main(){ 

    contact c; 
    c.input(); 
    c.output(); 
    return 0; 
} 

Это часть кода, с которым у меня возникла проблема.

Это часть, на которой необходимо проверить электронную почту.

bool contact::checkemail(string email) { 
    for(int a = 0; a < email.size(); a++) { 
     if(email.at(a) = '@') return true; 
    } 
    return false; 
} 
void contact::input(){ 
    cout<<"enter last name: "; 
    cin>>lname; 
    cout<<"enter first name: "; 
    cin>>fname; 
    cout<<"Enter address: "; 
    cin>>address; 
    cout<<"enter email "; 
    cin>>email; 
    while (!checkemail(email)) { 
     cout << "that is an invalid email address, re-entry email address." ; 
     cin>>email; 
    } 
} 
+0

Так в чем же проблема? Сброс кода без объяснений не поможет никому. – chrisaycock

+0

Пожалуйста, улучшите свой тест valide-email, потому что он слишком «светлый». –

+0

Какой из ваших предупреждений компилятора вы испытываете трудности с пониманием? Или это факт, что вы можете подтвердить «today @ noon» как адрес электронной почты? – Johnsyweb

ответ

2

if заявление в checkemail использует оператор присваивания, а не оператор сравнения.

Смежные вопросы