从文件中读取时,参数必须是完整路径?

时间:2016-10-01 21:22:04

标签: c++

我正在尝试从文件中读取。它似乎想要(至少)一条相对路径。我看到的大多数教程只使用文件名。

我在一个目录中有src dir和build dir。当我通过相对路径时,它可以工作。但是,如果我尝试在Docker容器中运行此代码,那么现在我的代码将无法工作,除非我给它一个绝对路径。

我做错了吗?读取文件并不困难。

这是我的代码:

    std::string line;
    std::vector<std::string> thingsToDo;
    std::ifstream myfile(filename);
    if (myfile.is_open()) {
        while (getline(myfile, line)) {
            thingsToDo.push_back(line);
        }
        myfile.close();
    }
    else {
        std::cout << "Unable to open file" << std::endl;
    }

“filename”是......

std::string filename = "things.txt" << works in tutorials, but not in real life :\
std::string filename = "../src/things.txt" << works on my machine :) (because remember, we are running the code from 'build' dir)
std::string filename = "/tmp/abolute/path/things.txt" << works in Docker :\

...帮助

1 个答案:

答案 0 :(得分:0)

已解决。最简单的事情:将文件复制到构建中。然后你所要做的就是传递文件名。

如何:

CMakeLists:

configure_file (
  "${PROJECT_SOURCE_DIR}/things.txt"
  "${PROJECT_BINARY_DIR}/things.txt"
  )