Как удалить кавычки из std :: filesystem :: path

Если я использую такие функции, как 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.

4

Решение

std::operator << (std::filesystem::path const &) определяется следующим образом:

Выполняет поток ввода или вывода по пути с. std::quoted используется для того, чтобы пробелы не были усечены [sic] при последующем чтении оператором потокового ввода.

Так что это ожидаемое поведение при потоковой передаче пути. Что вам нужно path::string():

Возвращает внутренний путь в формате собственного пути, преобразованный в определенный тип строки.

std::cout << "absolte to file : " << absolute(p2).string() << std::endl;
//                                               ^^^^^^^^^

Я также удалил fs:: поскольку absolute можно найти через ADL.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]