当尝试像这样一个接一个地打开两个文件时:
ofstream transactionFileList(file_day, std::ios_base::app);
transactionFileList << file_date << endl;
transactionFileList.close();
ofstream transactionFile(file_date);
for(int x = 0; x < _item_number_transaction.size(); x++){
transactionFile << _item_number_transaction[x] << ":" << _quantity_transaction[x] << endl;
}
transactionFile.close();
我没有收到任何错误,但只创建了 transactionFileList
。
此外,当我 cout
file_date
时,我得到 13-04-1995.txt
所以该变量没有问题!有什么想法吗?
变量
time_t t = time(0);
struct tm * now = localtime(&t);
char file_date[80];
char file_day[80];
strftime(file_date, 80, "%Y-%m-%d|%H:%M:%S.txt", now);
strftime(file_day, 80, "%Y-%m-%d_transactions.txt", now);
最佳答案
file_date
变量有无效的文件名,所以transactionFile
没有打开,你可以通过条件检查:
if (transactionFile) {
// do something with stream...
}
file_date
包含不能在某些操作系统的文件名中使用的符号 |
。
我还建议使用 RAII 习语的强大功能,而不是显式调用 close()
:
{
ofstream transactionFile(file_date);
if (transactionFile) {
for(int x = 0; x < _item_number_transaction.size(); x++){
transactionFile << _item_number_transaction[x] << ":" << _quantity_transaction[x] << endl;
} else {
throw std::runtime_error("File not opened.");
}
}
关于c++ - 依次打开两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29751659/