повышение:: обрежьте каждую строку в станд.:: вектор <станд.:: строка>

Я в настоящее время застреваю, находя правильный синтаксис для обрезки каждой строки в станд.:: вектор.

Я попробовал

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 был бы похож.

11
задан p.s.w.g 28 March 2013 в 16:04
поделиться

1 ответ

Вам также необходимо привязать второй параметр обрезки (локаль):

std::vector<std::string> v;
std::for_each(v.begin(), v.end(), 
              boost::bind(&boost::trim<std::string>,
                          _1, std::locale() ));
23
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: