如何输出到子目录中的文件?
How do I output into a file in subdirectory?
这不是重复的。我正在尝试将一些输出打印到子目录中的文件(在本例中为文件 /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 上使用的“\”,不是吗?
no file is created, nor any subdirectory
您正在使用 fstream
,它希望路径存在。如果您正在引用一个目录但它不存在,那么它将失败,因为您必须在 运行 您的程序之前创建目录,或者您必须使用 mkdir()
来创建它。
您可以通过 f.is_open()
检查您的流是否可以打开。
f.open(fname.str().c_str(), ios_base::out);
if (f.is_open())
{
f << "hello" << "\t";
f << endl;
f.close();
}
else
std::cerr << "Unable to open " << fname;
nor any subdirectory called ./stuff
为什么您希望 fstream
为您创建子目录?你必须自己做。在我的机器上测试它时我得到了相同的行为,简单的解决方案是做一个 mkdir stuff
。之后,文件被正确创建。但我认为没有抛出运行时错误很奇怪。当子目录不存在时,fstream
只是静静地什么都不做是不好的(特别是对于初学者)。
这不是重复的。我正在尝试将一些输出打印到子目录中的文件(在本例中为文件 /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 上使用的“\”,不是吗?
no file is created, nor any subdirectory
您正在使用 fstream
,它希望路径存在。如果您正在引用一个目录但它不存在,那么它将失败,因为您必须在 运行 您的程序之前创建目录,或者您必须使用 mkdir()
来创建它。
您可以通过 f.is_open()
检查您的流是否可以打开。
f.open(fname.str().c_str(), ios_base::out);
if (f.is_open())
{
f << "hello" << "\t";
f << endl;
f.close();
}
else
std::cerr << "Unable to open " << fname;
nor any subdirectory called ./stuff
为什么您希望 fstream
为您创建子目录?你必须自己做。在我的机器上测试它时我得到了相同的行为,简单的解决方案是做一个 mkdir stuff
。之后,文件被正确创建。但我认为没有抛出运行时错误很奇怪。当子目录不存在时,fstream
只是静静地什么都不做是不好的(特别是对于初学者)。