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

Проверить формат HH:MM:SS через string - C++

Восстановить пароль Регистрация
 
klimentij
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 10
30.11.2012, 01:51     Проверить формат HH:MM:SS через string #1
Задача такая что программа требует время в формате HH:MM:SS, проверяет ввод и выдает ответ, например - 23:09:03 - правильно!
2:2:2 - неправильный формат,
12:02:94 - неправильное время,
14.05.35 - неправильный формат,
qw2:we34 - неправильный формат.

Нужно сделать через string.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
30.11.2012, 01:55     Проверить формат HH:MM:SS через string #2
Цитата Сообщение от klimentij Посмотреть сообщение
Нужно сделать через string.
Так даже не интересно. Тут пара строк с string.find.
Вот на сях с strtok куда увлекательнее.
klimentij
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 10
30.11.2012, 02:02  [ТС]     Проверить формат HH:MM:SS через string #3
Цитата Сообщение от MrGluck Посмотреть сообщение
Так даже не интересно. Тут пара строк с string.find.
Вот на сях с strtok куда увлекательнее.
Очень нужно! Завтра надо сдать работу, не могли бы помочь?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
30.11.2012, 02:28     Проверить формат HH:MM:SS через string #4
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
31
#include <iostream>
#include <cstdlib>
#include <string>
 
bool correct(const std::string &str)
{
    if (str.size() != 8)
        return false; // incorrect form
    std::size_t firstColon = str.find(':');
    std::size_t secondColon = str.rfind(':'); // searches from end to begin
    if (firstColon != 2 || secondColon != 5)
        return false; // incorrect positions of colon(s)
    std::string HH = str.substr(0, 2);
    std::string MM = str.substr(3, 2);
    std::string SS = str.substr(6, 2);
    // you can use to_string (better) or atoi (worse) to convert to int
    int H = std::atoi(HH.c_str());
    int M = std::atoi(MM.c_str());
    int S = std::atoi(SS.c_str());
    // if all of these statements resturn true, function returns false
    return !(H < 0 || H > 24 || M < 0 || M > 60 || S < 0 || S > 60);
}
 
int main()
{
    std::string str;
    std::cout<< "Enter time in format HH:MM:SS"<< std::endl;
    std::cin>> str;
    std::cout<< (correct(str) ? "Correct" : "Incorrect");
    return 0;
}
klimentij
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 10
30.11.2012, 10:11  [ТС]     Проверить формат HH:MM:SS через string #5
Большое спасибо!
Yandex
Объявления
30.11.2012, 10:11     Проверить формат HH:MM:SS через string
Ответ Создать тему
Опции темы

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