C++ fstream 打开

标签 c++ io fstream filepath

我能够创建这样的文件

f.open("file")
f.open("./path/file")
f.open("../path/file")

但不是

f.open("~/path...)
f.open("/path...)

如何获得工作的绝对路径?

最佳答案

默认情况下,std::fstream::open(filename) 为输入和输出打开 filename。因此该文件必须存在并且您必须 有写权限。

在你的情况下:

f.open("file")
f.open("./path/file")
f.open("../path/file")

你很幸运。

在你的情况下:

f.open("~/path...")

您使用了路径元素 ~,这意味着在 shell 中是 $HOME 但只是 在 C++ 中表示 ~

案例:

f.open("/path...")

你真不走运:要么文件不存在,要么你没有写权限。

如果您只想打开文件进行输入,则:

  • 使用std::ifstream
  • 使用std::fstream f; f.open(文件名,std::ios_base::in);

如果您只想打开文件进行输出,则:

  • 使用std::ofstream
  • 使用std::fstream f; f.open(文件名,std::ios_base::out);

关于C++ fstream 打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35825090/

相关文章:

ruby - 如何通过 Ruby 与 Node REPL 交互

python - Unicode解码错误: 'ascii' codec can't decode byte 0xc3 in position 40: ordinal not in range(128)

linux - Linux read() 是否将数据复制到进程地址空间

c++ - Visual Studio 在进行文件管理操作时在哪里搜索txt 文件?

c++ - 我如何以编程方式确定我的 C++ 运行时库在哪里?

c++ - 如何在 GPU(最好是 CUDA)上对两个数据容器执行关系连接?

c++ - 几个大文件映射到内存

c++ - constexpr 和 ODR

c++ - 无法从具有字符串成员的结构 vector 中读取名称

c++ - 如果 fstream.open() 在子函数中失败,如何退出程序