如果捕获的文件流返回故障位(fs.fail() == nullptr
),我想使用lambda函数返回 bool(boolean) 值。
我使用正常的控制流进行了测试,流确实成功打开以进行提取。但是,带有lambda函数的类似代码似乎不起作用。怎么来的?
const std::string RATE = "data/list.csv";
void lambdaTest() {
static std::fstream fs;
fs.open(RATE, std::ios::in);
/* check whether the filestream was opened successfully */
if (fs.fail()) {
std::cout << "\nFAILD TO OPEN." << std::endl;
} else {
std::cout << "\nINSTREAM READY." << std::endl;
}
/* lambda version: */
if ([&]() { return fs.fail(); } ()) { std::cout << "FAILED TO OPEN." << std::endl; }
else { std::cout << "INSTREAM READY." << std::endl; }
}
最佳答案
假设打开失败。然后
if (fs.fail()) return false;
将是false
。 lambda将返回false
,并且您的条件将不成立,并且不会打印打开失败的信息。您可以将lambda更改为
[&]() { return fs.fail()); }
关于c++ - C++ |使用lambda函数检查流是否成功打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64291082/