我正在处理一个项目,我正在尝试在文件夹中创建一个文件夹和一个文件,但它不起作用



这是我的函数:

void Mail::send_mail(int id, std::string send_to, std::string subject, std::string message) {
int receiever_id = find_user(send_to);
std::fstream file("/mails/" + send_to + "/" + std::to_string(accounts.at(receiever_id).number_of_mails) + ".txt", std::ios::out);
email *mail = new email("From: " + accounts.at(id).username, "Subject: " + subject, "Content: " + message);

accounts.at(receiever_id).inbox.push_back(*mail);

file<<"From: "<<accounts.at(id).username<<std::endl;
file<<"Subject: "<<subject<<std::endl;
file<<"Content: "<<message;

accounts.at(receiever_id).number_of_mails++;

delete mail;

rewrite();

return;
}

如果不存在,我想创建一个文件夹邮件和一个带有收件人名称的文件夹,然后在里面创建一个txt文件,但由于某种原因,它不起作用。我不能使用外部库或系统函数。

正如@Eugene在评论中提到的那样,您不能在不存在的目录中创建文件。C++不会首先为您创建目录。

您可以使用boost首先创建目录,然后继续您的逻辑。

#include <boost/filesystem.hpp> ​boost::filesystem::create_directory("dirname");

使用boost的原因是您的代码是跨平台的,可以在不同的操作系统上工作。您可以使用system((并将在操作系统上创建目录的命令传递给它。

例如,在Linux上,这是这样的:

system(“mkdir user1”);

最新更新