如何使用相对路径的fstream对象?

use*_*359 24 c++ fstream relative-path

我是否总是必须为从std::fstream类中实例化的对象指定绝对路径?换句话说,有没有办法指定它们的相对路径,例如项目路径?

Kle*_*ist 16

您也可以使用相对路径.但它们与您调用可执行文件的环境有关.

这取决于操作系统,但所有主要系统的行为或多或少都与AFAIK相同.

Windows示例:

// File structure:
c:\folder\myprogram.exe
c:\myfile.txt

// Calling command from folder
c:\folder > myprogram.exe
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,您可以使用"c:/myfile.txt"或"../myfile.txt"访问myfile.txt.如果从root用户调用myprogram.exe c:\只有绝对路径可以工作,而是"myfile.txt"可以工作.

正如Rob Kennedy在评论中所说,关于fstream的路径并没有什么特别之处.但这是一个使用相对路径的代码示例:

#include <fstream>
int main() {
    std::ifstream ifs("../myfile.txt");
    ... // Do something sensible with the file
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*mer 12

如果你有一个.exe文件在运行C:\Users\Me 并想要写一个文件C:\Users\Me\You\text.txt,那么你需要做的就是添加当前的路径操作符.,所以:

std::ifstream ifs(".\\you\\myfile.txt");
Run Code Online (Sandbox Code Playgroud)

将工作