我正在尝试编写一个循环遍历多个文件的程序。
string files[]={"file1.txt","file2.txt"};
int i=0;
ifstream fin;
while(i<2){
fin.open(files[i]);
fin.close();
i++;
}
这是我的代码的精简版本。我从fin.open行收到错误。我的编译说:无法在当前范围内调用basic_ifstream<char,char_traits<char>>::open(files[i])
。
如果我输入实际字符串即可以正常工作。 fin.open("file1.txt")
,但我想避免复制相同的代码块8次。
有什么想法吗?
答案 0 :(得分:2)
“我的编译说:”
Can't call basic_ifstream>::open(files[i]) in current scope.
较旧的C ++标准版本(之前的C ++ 11)想要查看std::ifstream::open()
函数的const char*
参数,您可以使用
fin.open(files[i].c_str());
让代码向后兼容。