Разница между путями в std :: filesystem и std :: экспериментальной :: файловой системе - PullRequest
0 голосов
/ 30 января 2020

Я думал о переходе с std::experimental::filesystem на std::filesystem, но мой модульный тест начал срываться. Я использую компилятор Windows, VS2019 и MSV C с /std:c++latest.

. Я сузил проблему до разницы между методами добавления (и operator/=) от стандарта и экспериментальный кодовые базы.

#include <filesystem>
#include <experimental/filesystem>

int main() {
    std::filesystem::path p1 = "C:\\temp";
    p1 /= "\\test\\file.txt";           // Expected: C:\temp\test\file.txt, Actual C:\test\file.txt

    std::experimental::filesystem::path p2 = "C:\\temp";
    p2 /= "\\test\\file.txt";           // Expected: C:\temp\test\file.txt, Actual C:\temp\test\file.txt
}

Вопрос : как я могу использовать std::filesystem для добавления двух компонентов пути к Windows для получения C:\temp\test\file.txt?

1 Ответ

1 голос
/ 30 января 2020

Когда вы добавляете абсолютный путь, он заменяет все компоненты p1, вам нужно удалить начальный sla sh из \\test\\file.txt, чтобы сделать его относительным путем, чтобы он добавлялся к p1:

p1 /= "test\\file.txt";
...