我有一个像/a/b/c/text.txt
这样的完整路径如何使用c ++获取/ a / b / c和text.txt?更喜欢使用一些标准库函数。
我打算用
substring和find_last_of
答案 0 :(得分:1)
使用find_last_of
- http://www.cplusplus.com/reference/string/string/find_last_of/
与substr一起应该为你猜想一个解决方案
答案 1 :(得分:0)
您可以尝试以下操作:
std::string path = "/a/b/c/text.txt";
size_t lastSlash = path.rfind("/");
if (lastSlash != std::string::npos){
std::string filename = path.substr(lastSlash + 1);
std::string folder = path.substr(0, lastSlash);
}
请注意,这仅适用于正斜杠。
答案 2 :(得分:-2)
基于复制(stackoverflow.com/a/3071694/2082964),我认为以下解决了这个问题,
请注意,取决于您是否需要尾随/不;对于我的问题,我需要,所以我修改了一下。
// string::find_last_of
#include <iostream>
#include <string>
using namespace std;
void SplitFilename (const string& str)
{
size_t found;
cout << "Splitting: " << str << endl;
found=str.find_last_of("/\\");
cout << " folder: " << str.substr(0,found+1) << endl;
cout << " file: " << str.substr(found+1) << endl;
}
int main ()
{
string str1 ("/usr/bin/man");
string str2 ("c:\\windows\\winhelp.exe");
SplitFilename (str1);
SplitFilename (str2);
return 0;
}