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

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

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

Поиск времени в строке типа string - C++

17.02.2013, 23:09. Просмотров 314. Ответов 3
Метки нет (Все метки)

Задана строка, состоящая из слов. Слова друг от друга отделяются одним или несколькими пробелами. Количество символов не превышает 255. В конце текста ставится точка. Сформировать и вывести массив слов заданного типа.

Тип => Время ЧЧ.ММ.СС

То есть,например, есть строка "Я начинаю рабочий день в 08.00.00, а заканчиваю в 17.00.00", отсюда надо вытащить:

08.00.00
17.00.00

и записать в массив string mass[];

Добавлено через 33 минуты
Помогите написать функцию для нахождения формата времени, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 23:09     Поиск времени в строке типа string
Посмотрите здесь:

Функция типа String C++
C++ вектор типа string
C++ Строки типа string
C++ Переменную типа string вывести в printf?
C++ Чтение из файла в переменную типа string
C++ Поиск и удаление в строке string
C++ Сократить объект типа string
C++ Работа с объектами типа string
C++ Сортировка списка типа string по размеру
Задача без использования типа string C++
Поиск объекта в классе по строке типа char C++
Остановка ввода типа string в цикле C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.02.2013, 23:38     Поиск времени в строке типа string #2
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
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
 
int main()
{
    std::string word;
    std::vector<std::string> line;
 
    while (std::cin.get() != '\n') {
        std::cin >> word;
        line.push_back(word);
    }
 
    for (std::vector<std::string>::const_iterator iter = line.begin(); iter != line.end(); ++iter)
        if (iter->size() == 8 && isdigit((*iter)[0]) && isdigit((*iter)[1]) &&
                isdigit((*iter)[3]) && isdigit((*iter)[4]) &&
                    isdigit((*iter)[6]) && isdigit((*iter)[7]) &&
                        (*iter)[2] == '.' && (*iter)[5] == '.')
                    std::cout << *iter << '\n';
    
    return 0;
}
Добавлено через 6 минут
будет работать только если числовой формат будет ограждён пробелами, т.е "Я начинаю рабочий день в 08.00.00 , а заканчиваю в 17.00.00 часов."

Добавлено через 5 минут
исправленная версия
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
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
 
int main()
{
    std::string word;
    std::vector<std::string> line;
 
    while (std::cin.get() != '\n') {
        std::cin >> word;
        line.push_back(word);
    }
 
    for (std::vector<std::string>::const_iterator iter = line.begin(); iter != line.end(); ++iter)
        if (isdigit((*iter)[0]) && isdigit((*iter)[1]) &&
                isdigit((*iter)[3]) && isdigit((*iter)[4]) &&
                    isdigit((*iter)[6]) && isdigit((*iter)[7]) &&
                        (*iter)[2] == '.' && (*iter)[5] == '.')
            std::cout << (*iter)[0]<< (*iter)[1]<< (*iter)[2]<< (*iter)[3] 
                << (*iter)[4] << (*iter)[5] << (*iter)[6]<< (*iter)[7] << '\n';
    
    return 0;
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
18.02.2013, 09:18     Поиск времени в строке типа string #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <boost/regex.hpp>
#include <iostream>
#include <string>
#include <vector>
 
int main()
{
   const std::string s = "I start my work in 08.00.00 and end in 17.00.00";
   const boost::regex re("(\\d{2}\\.){2}\\d{2}");
   std::vector<std::string> times;
   boost::smatch matches;
   std::string::const_iterator start = s.begin();
   while (start != s.end() && boost::regex_search(start, s.end(), matches, re))
   {
      start = matches[0].second == s.end() ?  matches[0].second : matches[0].second + 1;
      times.push_back(matches[0]);
   }
   std::copy(times.begin(), times.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
http://liveworkspace.org/code/2i0OfQ$7
Nividimka
1 / 1 / 0
Регистрация: 16.11.2012
Сообщений: 15
18.02.2013, 09:51  [ТС]     Поиск времени в строке типа string #4
спасибо,всё работает
Yandex
Объявления
18.02.2013, 09:51     Поиск времени в строке типа string
Ответ Создать тему
Опции темы

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