gpt4 book ai didi

c++ - 如何从 std::string 中删除重复字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:08:48 32 4
gpt4 key购买 nike

我有一个像这样的std::string:

std::string fileName;

fileName 类似于 /tmp/fs////js//config.js它来自某个地方,我需要存储它。但是当我存储它时,我需要从路径中删除额外的'/'字符,基本上只需要目录名和文件名之间的一个分隔符。

我可以通过一次遍历字符串一个字符并与下一个字符进行比较来删除它们,但效率不高。

任何人都可以建议一些有效的方法吗?

最佳答案

删除重复的相邻元素是 std::unique 的工作。在这种情况下,您需要提供自己的谓词,但它是 O(n) 并且非常简单。

struct both_slashes {
bool operator()(char a, char b) const {
return a == '/' && b == '/';
}
};

std::string path("/tmp/fs////js//config.js");

path.erase(std::unique(path.begin(), path.end(), both_slashes()), path.end());

关于c++ - 如何从 std::string 中删除重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153128/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com