Если я использую такие функции, как absolute()
Я всегда получаю путь, который содержит кавычки.
Есть ли способ в функциях файловой системы, чтобы удалить эти кавычки, что позволяет использовать его, например, с. станд :: ifstream?
fs::path p2 { "./test/hallo.txt" };
std::cout << "absolte to file : " << fs::absolute(p2) << std::endl;
возвращает:
"/home/bla/blub/./test/hallo.txt"
я нуждаюсь
/home/bla/blub/./test/hallo.txt
вместо.
Это не проблема сделать это вручную, но я хочу спросить, есть ли метод внутри файловой системы lib.
std::operator << (std::filesystem::path const &)
определяется следующим образом:
Выполняет поток ввода или вывода по пути с.
std::quoted
используется для того, чтобы пробелы не были усечены [sic] при последующем чтении оператором потокового ввода.
Так что это ожидаемое поведение при потоковой передаче пути. Что вам нужно path::string()
:
Возвращает внутренний путь в формате собственного пути, преобразованный в определенный тип строки.
std::cout << "absolte to file : " << absolute(p2).string() << std::endl;
// ^^^^^^^^^
Я также удалил fs::
поскольку absolute
можно найти через ADL.
Других решений пока нет …