Я в настоящее время застреваю, находя правильный синтаксис для обрезки каждой строки в станд.:: вектор.
Я попробовал
std::vector<std::string> v;
std::for_each(v.begin(), v.end(), &boost::trim);
который дал мне следующие сообщения об ошибках в MSVC7.1.
ошибка C2784: 'Станд. _Fn1:: for_each (_InIt, _InIt, _Fn1)': не мог вывести аргумент шаблона для 'T1' от 'станд.:: вектор <_Ty>:: итератор' с [_Ty=std:: строка]: посмотрите объявление 'станд.:: for_each'
ошибка C2896: 'Станд. _Fn1:: for_each (_InIt, _InIt, _Fn1)': не может использовать шаблон функции 'пустое повышение:: алгоритм:: обрезка (SequenceT и, станд. константы:: локаль и)' как аргумент функции: посмотрите объявление 'повышения:: алгоритм:: обрезка'
Если я явно делаю шаблонные стрижки параметра, второй параметр не может быть найден компилятором, хотя его набор по умолчанию.
std::for_each(v.begin(), v.end(), &boost::trim<std::string>);
ошибка C2198: 'пусто (__ cdecl *) (станд.:: строка и, станд. константы:: локаль и)': слишком мало аргументов в пользу вызова через указатель на функцию
Я задавался вопросом как правильный синтаксис для вызова обрезки для каждого элемента в v
был бы похож.
Вам также необходимо привязать второй параметр обрезки (локаль):
std::vector<std::string> v;
std::for_each(v.begin(), v.end(),
boost::bind(&boost::trim<std::string>,
_1, std::locale() ));