mrjbom
@mrjbom

Как сравнить строки string с датами рождения?

Имеется массив строк:
string array_data[3] = {"13.11.1999", "09.10.1997", "22.05.1995"};

Требуется найти самую маленькую дату, в данном случае это 22.05.1995, ясно дело что обычное сравнение строк тут не поможет, как это реализовать?
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 2
Не оптимальное, но работающее решение, которое вам уже предлагали, основанное на преобразовании в формат YYYYMMDD:

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

int main(void)
{
	std::vector<std::string> array_data{ "13.11.1999", "09.10.1997", "22.05.1995" };
	auto as_yyyymmdd = [](const std::string& src){
		return src.substr(6,4) + src.substr(3,2) + src.substr(0,2); 
	};
	auto min_date_it = std::min_element(array_data.begin(), array_data.end(),
		[as_yyyymmdd](const std::string& a, const std::string& b){ 
			return as_yyyymmdd(a) < as_yyyymmdd(b);
		});
	std::string min_date = *min_date_it;
	std::cout << min_date << std::endl;
	return 0;
}
Ответ написан
Комментировать
GavriKos
@GavriKos
Вариантов много:
- парсим отдельно в каждой строке день, месяц, год, причем в инты, сравниваем.
- перестановками приводим к виду YYMMDD, переводим в инт, сравниваем
- используем какой нить класс работы с датами (зависит от подключенных/допустимых библиотек), который умеет парсить из строки и сравнивать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы