c++ - 将子字符串提取到最后一个分隔符 C++
问题描述
我正在尝试在 C++ 中找到
- 性能最好的
- 最优雅的
接受一个字符串和一个整数的代码,对于给定的分隔符,比如说“.”,从最后一个子字符串开始计算到第 n 个。
示例输入:
字符串“abcde”和 delimFromEndLevel = 1 => 字符串“abcd”
字符串“abcde”和 delimFromEndLevel = 2 => 字符串“abc”
等等
起点是以下代码:
void elaborateParent( const std::string& input, unsigned int levels )
{
std::size_t cutOffIndex = std::string::npos;
while (levels > 0)
{
cutOffIndex = input.rfind('.', cutOffIndex);
if (cutOffIndex == std::string::npos)
std::cout << "Not enough levels to go up!" << std::endl;
levels--;
if (levels>0)
{
if (cutOffIndex>0)
cutOffIndex--;
else
std::cout << "Not enough levels to go up!" << std::endl;
}
}
std::string result = input.substr(0, cutOffIndex);
std::cout << "Elaboration parent result: '" << result << "'" << std::endl;
}
解决方案
你把事情复杂化了:)
做就是了:
std::string elaborateParent( const std::string& input, unsigned int levels )
{
auto result = input;
for(; levels != -1; --levels) {
result.erase(result.find_last_of('.'));
}
return result;
}
我怀疑你会得到比这更好的表现!
推荐阅读
- javascript - 我如何将我的文件放在我的 Firestore 存储中?
- html - 如何从 Angular 中的 JSON 内的列表中获取值?
- video-indexer - 由于重定向过多,在 Video Indexer Developer Portal 中订阅 API 失败
- sql - 为每个客户连续返回所有上述零值
- java - 如何在匿名内部类中使用 Assert.assertTrue?
- arrays - 使用 features=f.readline().rstrip("\n").split(",") 用 numy 读取 cvc
- arrays - 在 Windows 10 上按“Print Screen”键时如何找到创建的阵列?
- javascript - Visual Studio,美化问题(可选链接运算符)
- r - R Rstudio 中的 SDM 包出错:模型无法运行,因为它找不到“存在插槽”
- amazon-web-services - AWS Cognito 跨区域复制