作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在寻找一种比下面的代码更优雅的方法来查找字符串中第一个大写字母的位置:
size_t getFirstUppercasePosition(const string &str)
{
for(size_t i = 0; i < str.size(); ++i)
{
if (isupper(str[i]))
return i;
}
return string::npos;
}
是否可以使用 find
或 find_if
做同样的事情?
添加:
我正在尝试将第一个大写字母转换为小写字母,然后从字符串中删除前面的部分。
例如,howAreYouToday
-> areYouToday
添加2:
const auto it = std::find_if(str.begin(), str.end(), [](auto c)
{return std::isupper(c);});
*it = tolower(*it);
str = str.substr(std::distance(str.begin(), it));
这是最好的方法吗?
最佳答案
如果您有权访问 C++11 及更高版本,则可以将 lambda 与 find_if
一起使用:
auto itr = std::find_if(str.begin(), std.end(), [] (char chr) { return std::isupper(chr); });
if(itr != str.end())
// use itr..
如果您确实需要索引,则可以使用 std::distance
。
关于c++ - 将字符串中的第一个大写字母转换为小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56968178/
我是一名优秀的程序员,十分优秀!