这是我的函数:
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”);