如何查看文本文件是空的还是c中不存在?

我写了一个方法,它接受一个文件名,检查文件是否存在并有内容,然后继续将文件中的6个数字读入6个int变量并返回true.如果文件不存在或没有内容,则返回false.

但是,当我调用该方法并给它一个存在的文件时,它返回false.我不确定我哪里出错了.

这是我的代码:

bool readHSV(string the_file)
{
    if(ifstream(the_file)){
        fstream myfile(the_file, ios_base::in);
        myfile >> h_min >> h_max >> s_min >> s_max >> v_min >> v_max;
        cout << h_min << endl << h_max << endl << s_min << endl << s_max
        << endl << v_min << endl << v_max;
        getchar();
        return true;
    }
    return false;
}

我正在使用的.txt文件的内容:

4
22
68
192
162
247

解决方法:

函数返回false的唯一方法是ifstream(the_file)失败,这意味着它根本无法打开文件,无论它是否存在.如果文件确实存在但ifstream仍然失败,请仔细检查the_file是否包含正确的路径和文件名,以及您的应用程序是否有权访问该文件.

请注意,您要打开文件两次,一次是ifstream,另一次是fstream.你不需要这样做.您应该只打开一次文件,如果能够从中读取所需的值,则返回true,例如:

bool readHSV(const string &the_file)
{
    ifstream inFile(the_file);
    if (inFile >> h_min >> h_max >> s_min >> s_max >> v_min >> v_max)
    {
        cout << h_min << endl
             << h_max << endl
             << s_min << endl
             << s_max << endl
             << v_min << endl
             << v_max;
        getchar();
        return true;
    }
    return false;
}
上一篇:C read()问题


下一篇:c – 使用ifstream读取浮点数