3

假设这filesystem::current_path将返回路径:

/tmp/1567519419.773012

但我想要一个尾随分隔符。如果看起来我应该做的就是:

filesystem::current_path() / filesystem::path()

这适用于 gcc给我:

/tmp/1567519419.773012/

但是在上,虽然filesystem::current_path也给了我没有尾随分隔符的绝对路径,但除以filesystem::path()没有效果。结果路径仍然是没有尾随分隔符的绝对路径。

我想要跨平台兼容的代码,并且我想避免检测当前路径是否已经有尾随分隔符。

我有什么可用的吗?

4

1 回答 1

3

我不太熟悉filesystem哪个编译器是正确的(如果涉及实现定义的行为,可能两者都是正确的)。但是,以下内容应适用于正确实现的所有平台filesystem

#include <iostream>
#include <filesystem>

int main() {
    auto foo = std::filesystem::current_path();
    foo += foo.preferred_separator; // A static data member of std::filesystem::path

    // The lexically normal form eliminates doubled separators
    std::cout << foo.lexically_normal().string() << '\n';
}
于 2019-09-03T16:19:03.080 回答