C++ 一个接一个地打开两个文件
尝试按如下方式依次打开两个文件时:C++ 一个接一个地打开两个文件,c++,C++,尝试按如下方式依次打开两个文件时: 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.siz
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();
file\u 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.");
}
}
{
流事务文件(文件日期);
if(事务文件){
对于(int x=0;x<_项目_编号_事务处理.size();x++){
transactionFile您创建文件的方式日期您会在其中输入一个特殊字符(:
),系统可能不允许创建文件
例如,在windows shell中,我得到:
C:\test>echo foo>a:2.txt
这是一种可渗透的化学物质
(未找到路径的法文错误消息
)
AFAIK:
用于将流记录到windows文件中(参考中)提取:
流的命名约定
从Windows shell命令行指定时,流的全名为“filename:stream name:stream type”,如以下示例所示:“myfile.dat:stream1:$DATA”.Hmm,file\u day
和file\u date
的类型是什么?它们是类型string
可能file\u date
和file\u day
具有相同的值?请参阅我的编辑,了解如何创建变量,其中OS?file\u数据包含管道符号和冒号(在Windows文件名中不允许)。
{
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.");
}
}