Работает следующий код -
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
#include <cctype>
char* lower(char c){
}
int main()
{
std::vector<std::string> vec = {"AbBBBcCc", "AFFDDsDCc"};
for (std::vector<std::string>::iterator it = vec.begin(); it != vec.end(); ++it)
{ std::string data=*it;
std::transform(data.begin(), data.end(), data.begin(),
[](unsigned char c){ return std::tolower(c); });
std::cout << data<< std::endl;
}
return 0;
}
Вышеупомянутое, вероятно, будет легче всего понять, хотя вы также можете сделать это по-своему -
std::transform(it->begin(), it->end(), it->begin(), [](char c){ return std::tolower(c); });
Есть и другой способ если вы хотите удержать указатель, используя *
, а затем преобразовать его в нижний регистр -
std::transform((*it).begin(), (*it).end(), (*it).begin(),
[](char c) { return std::tolower(c); });
Все три фрагмента кода, которые у меня выше, выполняют ту же задачу. Приведенные выше различные примеры помогут вам понять работу указателей и разыменования. Надеюсь, это поможет?