gpt4 book ai didi

c++ - 这种 istream 的三元运算安全吗?

转载 作者:行者123 更新时间:2023-11-30 05:39:22 25 4
gpt4 key购买 nike

decltype(std::cin)&& is = (argc < 2 ? std::move(std::cin) : std::ifstream(argv[1]));

这很危险吗?有没有更简单/危险性更小的方法?

它工作正常。示例:

int i = 42;
is >> i; // enter 50
std::cout << i; // 50

最佳答案

我无法准确说明您的版本有多安全。但是,就个人而言,我不想移动 std::cin 或绑定(bind)到 std::ifstream 除非我知道它是开放的(有能力的)。我赞成首先打开 std::ifstream(如果它已在 argv 中指定)然后绑定(bind)到 std::istream& 如果is_open() 否则绑定(bind)到 std::cin

我一直这样做,而且非常安全:

int main(int argc, char* argv[])
{
std::ifstream ifs;

if(argc > 1)
{
ifs.open(argv[1]);
// check error and maybe exit
}

std::istream& is = ifs.is_open() ? ifs : std::cin;

// ...
}

this SO question 的答案也可能感兴趣。

关于c++ - 这种 istream 的三元运算安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409144/

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