Форум программистов, компьютерный форум CyberForum.ru

Проверка email - C++

Восстановить пароль Регистрация
 
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
09.11.2012, 21:22     Проверка email #1
Всем доброго времени суток!
Задача видна по заголовку темы. в общем у меня сейчас картина такая

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
char str[30];
cout<<"Enter email"<<endl;
cin>>str;
{
bool valid = true;
int all_presents = 0;
std::string suitable_symbols = "-_.@"; // допустимые символы помимо латинских букв и цифр
for(int i = 0; str[i] != '\0'; i++)
    {
    if( !isalpha(str[i]) && !isdigit(str[i]) && suitable_symbols.find(str[i]) == std::string::npos){ // наличие недопустимого символа
        valid = false; break;
    }
    if(i > 0 && str[i] == '.' && str[i - 1] == '.') { valid = false; break; } // две точки подряд
    else if(i > 0 && str[i] == '@' && !all_presents) { all_presents = 1; } // наличие @
    else if(str[i] == '@' && all_presents) { valid = false; break; } // наличие двух @ в строчке
    else if( ( isalpha(str[i]) || isdigit(str[i]) ) && all_presents == 1) { all_presents = 2; } // наличие буквы или цифры после @
    else if(str[i] == '.' && all_presents == 2) { all_presents = 3; } // наличие точки после символа( который после @ )
    else if(isalpha(str[i]) && all_presents == 3 && str[i + 1] == '\0') { all_presents = 4; } // наличие буквы в конце строчки
    }
if(valid && all_presents == 4) { cout << "adress is valid and contains all the needed parts.";}
else { cout<<"adress is incorrect!"<<endl;}
}
}
Надо еще добавить условия, чтобы первым символом не были ._-@ не знаю, куда вставить условие... И еще чтобы перед и после собачки тоже отсутствовали ._-
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.11.2012, 21:29     Проверка email #2
Регекс для проверки.
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
09.11.2012, 23:06  [ТС]     Проверка email #3
в том то и дело, что через рег. выражения у меня не запускается. поэтому с условиями пишу

Добавлено через 57 минут
что, вставить доп. условия типа не айс вариант? или как? помогите пожалуйста. либо просто подскажите
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
09.11.2012, 23:40     Проверка email #4
Hardcore, у std::string есть клевые методы поиска. Может их использовать?
Да и вообще, используйте std::string вместо char[] для начала. Удобнее же
Yandex
Объявления
09.11.2012, 23:40     Проверка email
Ответ Создать тему
Опции темы

Текущее время: 11:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru