Почему STD :: FileSystem :: velive_Path () только иногда возвращает пустые строки для несуществующих путей?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему STD :: FileSystem :: velive_Path () только иногда возвращает пустые строки для несуществующих путей?

Сообщение Anonymous »

Я пытаюсь использовать API файловой системы C ++, чтобы выяснить, являются ли некоторые пути относительно текущего каталога или нет. Я думал, что смогу использовать API std :: fileystem :: velive (), но он дает мне пустые строки, и я не понимаю, почему. < /P>
конкретный пример: < /p>

Код: Выделить всё

#include 
#include 

void test(std::filesystem::path p) {
std::cout  "../../../../a/b/c"
"a" -> ""
"a/b" -> ""
"a/b/c" -> ""
"x/y/z" -> ""
"a/x/y" -> ""
< /code>
Хорошо, абсолютные пути становятся относительными, достаточно справедливыми, но относительные пути являются пустыми строками. Почему? Я думаю, что уже относительные пути останутся неизменными. (Обратите внимание, что нет исключений!) Если я создаю файл 
в текущем каталоге:
$ touch a
$ ./paths
"/a/b/c" -> "../../../../a/b/c"
"a" -> "a"
"a/b" -> "a/b"
"a/b/c" -> "a/b/c"
"x/y/z" -> ""
"a/x/y" -> "a/x/y"
< /code>
да? Хорошо, «А» существует теперь, так что это действительный относительный путь. И «A/B» я мог бы понять, если «А» был хотя бы каталогом, но это не так. Но почему «A/B/C» и «A/X/Y» действительны, когда «X/Y/Z» не является?
Помочь мне понять логику!>

Подробнее здесь: https://stackoverflow.com/questions/796 ... strings-fo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»