не могу прочитать файл C ++ в относительном пути, используя файловую систему - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь прочитать файл в C ++, используя относительный путь. Я знаю, что это было проблемой в прошлом, но надеялся, что новая библиотека std :: filesystem поможет. Тем не менее я не могу заставить его работать.

У меня есть простой файл test.csv.

1  2
3  4
5  6

и мой тест. cpp выглядит следующим образом:

#include <iostream>
#include <filesystem>
#include <cstdlib> 
#include <fstream>

int main(void)
{
std::filesystem::path p{"./test.csv"};
std::filesystem::path p2{"../test.csv"};

// file in same path
auto file = std::ifstream{p};
auto line = std::string();
// read file line by line
auto a = 0, b = 0;
while (file >> a >> b) {
    std::cout<< a << ' ' << b << std::endl;
}
file.close();

// try the same for the file in the parent_dir
file.open(p2);
// read file line by line
a = 0, b = 0;
while (file >> a >> b){
    std::cout<< a << ' ' << b << std::endl;
}
file.close();
}

первый путь p отлично загружает файл и печатает вывод. Второй (относительный путь к родительскому каталогу не жалуется, но ничего не делает во время выполнения. Как правильно читать файлы по относительным путям?

...