我写了一个方法,它接受一个文件名,检查文件是否存在并有内容,然后继续将文件中的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;
}