所以我需要通过以下方式解析用户的输入: 如果用户输入
C:\Program\Folder\NextFolder\File.txt
或
C:\Program\Folder\NextFolder\File.txt\
然后我想删除文件并保存
C:\Program\Folder\NextFolder\
我基本上想从末尾开始找到第一次出现的 \
,如果他们在尾部加上斜线,我就能找到第二次出现的地方。我可以用这段代码决定第一或第二:
input.substr(input.size()-1,1)!="/"
但我不明白如何从末尾开始找到第一个出现的地方。有什么想法吗?
最佳答案
这个
input.substr(input.size()-1,1)!="/"
效率很低*。使用:
if( ! input.empty() && input[ input.length() - 1 ] == '/' )
{
// something
}
从末尾开始寻找某物的第一次出现与从头开始寻找最后一个“某物”是一样的。您可以使用 find_last_of
, 或 rfind
或者,您甚至可以使用标准的 find
,结合 rbegin
和 rend
*std::string::substr
创建一个子字符串,"/"
可能创建另一个(取决于 std::string::operator!=
), 比较两个字符串并销毁临时对象。
注意
C:\Program\Folder\NextFolder\File.txt\
不是文件路径,而是目录。
关于C++解析字符串以查找出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806615/