воскресенье, 31 октября 2010 г.

Парсер csv

Недавно мне понадобилось парсить файл формата csv. При этом каждый элемент соответствует некоторому полю структуры, например:
Содержимое файла csv:
some string,1,some string 2,100500
hello, 2,good bye,111111

Структура, которую необходимо заполнить:
struct some_struct
{
    std::string name1;
    int count1;
    std::string name2;
    int count2;
};
_Winnie C++ Colorizer
Используем для этих boost:
Нам понадобятся две библиотеки: tokenizer и lexical_cast

воскресенье, 24 октября 2010 г.

Приемы программирования. Part 1

Язык C
Как писать функции, безопасные с точки зрения утечки ресурсов.
Под ресурсами понимаются открытые файлы, сокеты, хэндлы, выделенная память.

Наша функция должна работать с ресурсом (читать из него, писать в него), при этом количество точек выхода из функции велико, если вдобавок мы работаем с несколькими ресурсами (например перекладываем данные из двух файлов в один по некоторому алгоритму), то становится очень сложно следить за всеми ресурсами. Если же мы модифицируем алгоритм (например, добавляем еще один ресурс), то во все точки выхода придется добавлять закрытие этого ресурса, к тому же постоянное повторение одних и тех же фрагментов понижает читабельность кода