在C+中读取多个文件+;使用相同的fstream对象 我用C++代码处理下面两个不同的文件,好像我失败了两次读到了,FFASH对象有两个限制,两个读取多个文件? fstream fin("file1.txt"); //operation fin.close(); fin.open("file2.txt");//failed
试着这样做:在C+中读取多个文件+;使用相同的fstream对象 我用C++代码处理下面两个不同的文件,好像我失败了两次读到了,FFASH对象有两个限制,两个读取多个文件? fstream fin("file1.txt"); //operation fin.close(); fin.open("file2.txt");//failed,c++,file-io,fstream,C++,File Io,Fstream,试着这样做: #include <iostream> #include <fstream> int main() { const char* const files[] = { "file1.txt", "file2.txt", "file3.txt" }; size_t sz = sizeof(files) / sizeof(files[0]); std::fstream fin; for(size_t i = 0; i < sz; +
#include <iostream>
#include <fstream>
int main() {
const char* const files[] = { "file1.txt", "file2.txt", "file3.txt" };
size_t sz = sizeof(files) / sizeof(files[0]);
std::fstream fin;
for(size_t i = 0; i < sz; ++i) {
fin.open(files[i], std::ios_base::out);
// do something
fin << "123\n";
fin.close();
}
return 0;
}
#包括
#包括
int main(){
常量字符*常量文件[]={“file1.txt”、“file2.txt”、“file3.txt”};
size_t sz=sizeof(文件)/sizeof(文件[0]);
标准::流鳍;
对于(尺寸i=0;i fin关闭文件后,必须调用.clear()方法打开具有相同对象的新文件。将文件流与文件重新关联完全可以。失败的原因可能有很多:文件是否存在?您有权限打开它吗?您是否可以尝试只指定std::ios::in
而不是将其保留为默认值,即std::ios::in | std::ios::out
?我这样问是因为gcc 4.8.1和4.9.X在两者都被指定时失败了:让我们试着指定一个,看看它是否有效?@Brandon它失败了,因为std::ios_base::in
阻止创建一个不存在的文件。将其替换为std::ios_base::out
将修复这一问题,但您将丢失输入功能。这将是错误的tter将std::ios_base::trunc
附加到openmode。是的,如果我先切换参数,比如file2.txt,file1.txt将不可访问。在C++11之前,您的流不能确保在打开
中将内部标志重置为goodbit
,这些标志需要在重新打开之前清除
,原因是什么编译时使用的标准?此方法仍然失败@郑穗展 它以什么方式失败?发生了什么?您有目录的权限吗?是的,因为如果我切换两个参数的顺序,file1.txt将无法打开,我使用if(!fin)知道它失败了@郑穗展 您没有完全按照上面的方式使用代码。如果您这样做,您就不会遇到这个问题。