如何在初始化的同一行检查流是否失败
How to check stream for failure in same line as initialization?
我能做到这一点吗?
if (auto&& ifs = std::ifstream("main.cpp") && ifs)
{
std::string word;
ifs >> word;
std::cout << word;
}
我的错误是use of 'ifs' before deduction of 'auto'
。我想避免在单独的行中初始化和检查错误。我的意图是限制流的范围。
你需要检查你的输入是否成功,所以你最好做这样的事情:
std::string word;
if (std::ifstream("main.cpp") >> word) {
std::cout << word;
}
如果你需要使用流对象进行其他操作,你可以使用
if (std::ifstream ifs{"main.cpp"}) {
// code as before with input checking added, of course
}
只需去掉&& ifs
。赋值表达式的值是赋值后ifs
的值,如果打开成功,则为true。
错误是因为您正在从值std::ifstream("main.cpp") && ifs
初始化ifs
,该值是循环的;您不能期望计算该表达式,因为在计算该表达式时尚未定义ifs
。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 试图让变量检查数组中的某些内容
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 从C++dll访问C#中的一行主要参数
- 检查值是否在集合p1和p2中,但不在p3中
- C++概念:如何使用'concept'检查模板化结构的属性?
- 概念TS检查忽略私有访问修饰符
- 如何检查一行中的3个节点是否相同C++?
- 如何检查从键盘输入的特定整数值是否存在于C++文件中的一行或多行中
- clang format函数和错误检查在同一行
- 在C++中检查输入文件中的一行是否只有一个int
- 如何检查文件的最后一行是否有new_line字符?C++
- 如何在初始化的同一行检查流是否失败
- QT检查至少有一行被选中QTableWidget
- c++检查向量中一行中有多少相同的元素
- 如何在运行时错误发生之前检查.cpp文件的最后一行