В виду того,что иногда программистам хочется размять свой мозг и сделать какие-либо упражнения, то они начинают их искать :). Приведу пример подобной задачки и я.
Цель задачи: Написать реализацию функции, которая возвращает значение параметра в виде std::string.
Вот прототип итоговой функции и используемого ею типа итератора:
typedef std::string::iterator StrItr_t;
std::string ExtractValue(StrItr_t & p, std::string & s)
Значением считать:
1) Одну и более строк, с возможным выделением значения в ковычки;
2) Символом переноса на новую строку считать '\', находящийся в конце строки, до привычного нам '\n', т.е. байта 0x0A и предваренный пробелом или табуляцией;
3) Строка начатая ковычкой, при перенесении на новую строку не выделяется повторно в ковычки на новой перенесенной строке;
4) Символами коментария считать ';', '#' и только если значение не выделено в ковычки;
5) Если значение взято в ковычки и встретилось s.end() значит все что успели прочитать считать результатом;
В результат не попадают:
1) Ковычки, которые выделяют значение;
2) Символы коментариев;
3) Привычный нам символ новой строк '\n', т.е. байт равный значению 0x0A, который физически делит строки;
4) Символ переноса '\' на следующую строку;
5) Символ вертикальной табуляции '\t'.
понедельник, 26 июля 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий