【发布时间】:2015-01-21 20:55:00
【问题描述】:
我是 C++ 新手,正在尝试编写一个简单的函数,将字符串保存到文件中。 当我将完整路径传递给 fstream 时,该函数有效,但它不解析相对路径。
这是我的代码的相关部分
#include <iostream>
#include <fstream>
void writeToFile ()
{
std::fstream fs;
fs.open ("/home/blabla/Documents/test.txt", std::fstream::in | std::fstream::out | std::fstream::app);
fs << " test content";
fs.close();
}
这工作正常,但我想在执行我的程序的文件夹中创建文件,所以我尝试了这个
fs.open ("./test.txt", std::fstream::in | std::fstream::out | std::fstream::app);
我也试过
fs.open ("~/Documents/test.txt", std::fstream::in | std::fstream::out | std::fstream::app);
他们都没有创建新文件,我没有收到任何错误消息。
我发现这篇文章表明,我可以将相对路径传递给 fstream,但只提供 windows 示例。 How to use fstream objects with relative path?
我在 Linux Mint 上工作,目标环境是 debian。
感谢任何提示或建议, 迈克尔
【问题讨论】:
-
“在执行我的程序的文件夹中”是什么意思。你的意思是可执行文件的位置?
-
这个
~/Documents/test.txt由shell 评估,而./test.txt应该可以工作,如果你在同一个目录中运行你的程序。 "and i didn't get any error message"你永远不会得到,打开后你必须测试它:if(!fs) { std::cerr << "Could not open file" << std::endl; }