我写了一个方法,该方法接受文件名,检查文件是否存在并具有内容,然后继续将文件中的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
答案 0 :(得分:1)
函数返回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;
}
答案 1 :(得分:0)
您可以像这样使用<filesystem>
:
#include <filesystem>
namespace fs = std::filesystem; // for brevity
// ...
bool func(std::string const& filename)
{
if(!fs::exists(filename) || fs::file_size(filename) == 0)
return false;
std::ifstream ifs(filename);
if(!ifs)
return false;
// do stuff here with ifs
return true;
}