Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Rennex helped*/
- #include <iostream>
- #include <vector>
- #include <cstring>
- #include <string>
- #include "stdio.h" //strtok
- using namespace std;
- bool validateEmail(string);
- int main(){
- string email;
- bool isValid;
- do{
- cout<< " Enter email (or q/Q to quit): ";
- getline(cin, email);
- isValid= validateEmail(email);
- if(isValid)
- cout<< "\n\t Valid Email\n";
- else
- cout<< "\n\tInvalid Email\n";
- } while (email != "q" && email != "Q");
- return 0;
- }
- bool validateEmail(string email){
- //check name exists (first character is alphanumeric)
- //check last character valid (alphanumeric)
- if(!isalnum(email.at(0)) || !isalnum(email.at(email.size()-1))){
- cout<<"\n\tINVALID NAME\n";
- return false;
- }
- //check if @ used multiple times
- int atPos= 0;
- for(int ctr= 0; ctr != email.size(); ++ctr){
- if(atPos != 0){
- cout<< "\n\t'@' used multiple times";
- return false;
- }
- }
- //split into sections
- vector<string> vData;
- char str[321];
- strcpy(str, email.c_str()); //convert to cstring
- char *pch;
- pch= strtok(str,"@."); //first part until delimiter
- vData.push_back(pch);
- while(pch != NULL){ //each successive delimiter
- pch= strtok (NULL, "@.");
- if(pch == NULL) break;
- vData.push_back(pch);
- }
- if(vData.size() <3){ //make sure at least 3 parts exist (name, domain, tld)...but can have more than 3 EX: subdomains
- cout << "\n\tNot enough sections (name@domain.tld)";
- return false;
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement