分割文件路径
问题描述:
我有一个文件路径,其可具有既/和\以及它们的倍数,例如分割文件路径
\\ ABC/TR \ record.csv
或
\ \ RE/NST/OPR \等等/一些/月\
我想拿到第2张是(ABC和TR在第一个例子中,并重新在第二NST)
哪有我在做这个ual C++? (windows) 使用正则表达式或一些msdn函数?也许有一个msdn函数来标准化文件路径到所有\或全部/,并且只有其中一个? (我不能使用额外的库如升压)
答
我认为你可以简单地“解析”在循环中的字符串,如果你确信你只需要遇到\和/作为路径分隔符。是的,你可以使用正则表达式或更复杂的东西,但这是一个非常简单的问题。
事情是这样的 - 注意,代码是未经测试的,最有可能将无法编译,但它会说明该算法:
std::string::citerator beg = path.cbegin();
std::string::citerator end = path.cend();
unsigned separator_count = 0;
while(beg != end && separator_count < 4)
{
if (*beg == '/' || *beg == '\\')
++separator_count;
++beg;
}
std::string extracted_path = (separator_count == 3)
? path.substr(path.cbegin(), std::distance(path.cbegin(), beg))
: std::string();