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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
klimentij
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 10
#1

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

30.11.2012, 01:51. Просмотров 495. Ответов 4
Метки нет (Все метки)

Задача такая что программа требует время в формате HH:MM:SS, проверяет ввод и выдает ответ, например - 23:09:03 - правильно!
2:2:2 - неправильный формат,
12:02:94 - неправильное время,
14.05.35 - неправильный формат,
qw2:we34 - неправильный формат.

Нужно сделать через string.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2012, 01:51     Проверить формат HH:MM:SS через string
Посмотрите здесь:

Модификация объекта string через ссылку и указатель C++
Строки через std::string C++
C++ Как вывести переменную string через cout?
Простой ввод строки с пробелами через string C++
C++ Как проверить есть ли в string что нибудь ?
C++ Чем отличается вставка в vector<string > через pushback и через индекс []?
Как проверить, что пользователь ввел число в переменную string? C++
Переделать работу с текстом через string C++
В string через getline() попадает предыдущий пробел C++
Доступ к элементу std::string через указатель C++
Подсчет длины string, переданного через указатель C++
Как класс string записать в бинарный файл через вектор? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6191 / 3443 / 421
Регистрация: 29.11.2010
Сообщений: 9,123
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
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6191 / 3443 / 421
Регистрация: 29.11.2010
Сообщений: 9,123
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
Ответ Создать тему
Опции темы

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