C++ 关于C+中for循环中的文件存在性检查+;

C++ 关于C+中for循环中的文件存在性检查+;,c++,file,C++,File,我试图检查文件是否存在,如果存在,则继续执行任务,如果不存在,则仅输出没有此类文件。我已经在其他代码中这样做了,但它似乎与我当前的代码不兼容 其基本内容如下: count=argc; for(i=0; i < count-1; i++) { filename[i] = argv[i+1]; } for( i=0; i < count-1; i++) { int tempi=i; ifstream infile(filename[i]

我试图检查文件是否存在,如果存在,则继续执行任务,如果不存在,则仅输出没有此类文件。我已经在其他代码中这样做了,但它似乎与我当前的代码不兼容

其基本内容如下:

count=argc;


for(i=0; i < count-1; i++)
{
    filename[i] = argv[i+1];
}


for( i=0; i < count-1; i++)
      {
      int tempi=i;
      ifstream infile(filename[i].c_str());

           if(infile)
           {
           //do things
           }
           else
           {
           cout<<"no file"<<endl;
           }
count=argc;
对于(i=0;i您是否需要调用
infle.is_open()
。此外,如果文件存在,您是否计划对其进行处理?

访问argv的标准方法是:

int main( int argc, char * argv[] ) {
    for ( int i = 1; i < argc; i++ ) {
        // do something with argv[i]
    }
}
intmain(intargc,char*argv[]){
对于(int i=1;i
infle
在条件中,当流处于“坏”状态时,计算结果为
false

但是,仅仅打开文件并不会使流处于坏状态(欢迎使用C++),只有在尝试从流读取之后,该机制才会为您工作。 幸运的是,您可以使用

infle.is_open()
显式测试流是否已打开

编辑

上述情况并非如此


,我看不出你的代码有什么问题。

哪一部分似乎不起作用?在这种情况下,“似乎起作用”是什么意思?你期望发生什么,发生了什么?到底“似乎不起作用”是什么意思?啊!我真的建议打一个
stat
电话(或)不要使用
stat()
如果您想知道Unix上是否存在文件,请改用
access()
。这样更便宜。@John:谢谢,每天学习mm我真的需要去检查一下。我不认为这是真的。@sehe:我刚开始的回答中有一个输入错误。可能是您看到它说的是
.open()
,而不是
。\u open()
.Unaperson是正确的。这不是很令人惊讶。我收回我的答案,并真心希望@Sam能让我们知道他问题的解决方案是什么,因为它不应该是我的。不幸的是,我不能删除这个答案,因为它已经被接受;也许被接受的答案会改变(并且应该改变).嗨,各位,对不起,我没有早点回复。我的原始想法实际上是正确的。我刚刚错放了一两个大括号,把它扔掉了。问题是,如果我输入了错误的文件名,它会冻结。尽管如此,谢谢!但这并不能回答问题。这不是发布评论作为答案的理由。请阅读您的评论r FAQ.@Tomalak我已经以这样或那样的方式在这里发布了好几年了。相信我,我知道这个网站是如何工作的。如果你想发布代码,唯一现实的方法就是通过一个答案。这仍然不能成为一个答案。我开始明白为什么这些年来你可能觉得有必要改变你的身份。