gpt4 book ai didi

c++ - C++ |使用lambda函数检查流是否成功打开

转载 作者:行者123 更新时间:2023-12-02 10:09:17 25 4
gpt4 key购买 nike

如果捕获的文件流返回故障位(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com