Определите функцию get_time(), которая «угадывает» смысл неоднозначных представлений дат, таких как 12/5/1995, но по-прежнему отвергает все или почти все ошибочные записи. Решите, какие именно догадки приемлемы и какова вероятность ложных срабатываний.
Метка: локализация
Использовоние clock().
Используйте clock() для определения стоимости (1) функционального вызова, (2) вызова виртуальной функции, (3) чтения char, (4) чтение int из одной цифры, (5) чтение int из пяти цифр, (6) чтение double из пяти цифр, (7) односимвольного string, (8) пятисимвольного string и (9) сорокасимвольного string.
Реализация Cvt_to_upper.
Реализуйте и протестируйте Cvt_to_upper (параграф D.4).
Римские числа (ввод/вывод).
Реализуйте ввод/вывод римских чисел (вида XI или MDCLII).
Фасет Date_out.
Напишите и протестируйте фасет Date_out, который записывает даты типа Date с помощью формата, передаваемого в качестве аргумента конструктору. Обсудите плюсы и минусы такого подхода в сравнении с глобальным форматом дат, предоставляемым date_fmt (параграф D.4.4.6).
Сравнение Season_io.
Сравните две реализации Season_io (параграф D.3.2 и параграф D.4.7.1).
Где хронятся именованные локализации.
Попробуйте выяснить, где в вашей системе хранятся именованные локализации. Если вы имеете доступ к той части системы, где хранятся контексты локализации, создайте и сохраните новую именованную локализацию. Постарайтесь не испортить существующие локализации.
Список контекстов локализации.
Составьте список контекстов локализации, поддерживаемых вашей системой.
Функция get_time().
Определите get_time(), которая воспринимает гораздо больше входных форматов, чем вариант из параграфа D.4.4.5.
Эксперимент с форматом ввода/вывода для дат.
Поэкспериментируйте и определите, какие форматы ввода/вывода использует ваша система для дат.