【发布时间】:2021-04-19 12:42:21
【问题描述】:
这不是重复的。我正在尝试将一些输出打印到子目录中的文件(在本例中为文件 /stuff/output_1.txt),但它似乎没有创建任何新文件。代码执行,但没有创建文件,也没有任何名为 /stuff 的子目录。这是我的代码:
#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;
int main(void)
{
int out = 1;
stringstream fname;
fstream f;
fname << "./stuff/output" << "_" << out << ".txt";
f.open(fname.str().c_str(), ios_base::out);
f << "hello" << "\t";
f << endl;
f.close();
}
当我改用这条线时
fname << "output" << "_" << out << ".txt";
它会在当前目录中创建一个名为 output_1.txt 的文件,因此其余代码可以正常工作。出了什么问题?
我使用的是 macOS,所以“/”应该是正确的,而不是 Windows 上使用的“\”,不是吗?
【问题讨论】:
-
你必须先创建子目录,使用
mkdir。文件只能在已经存在的目录中创建。 -
有没有叫 stuff 的目录?
-
太棒了,非常感谢。我以为我已经尝试过了,但看起来我没有。 :)
-
顺便说一句,因为 C++11 有一个需要
std::string的重载,即你可以这样做f.open(fname.str() , ios_base::out);
标签: c++ fstream stringstream