C++ 在读取txt时检查输入是否存在
我的程序在包含各种命令的文本文件上运行。其中一个是“show”,它显示数组或数组中的元素。该命令可以有以下两种形式:C++ 在读取txt时检查输入是否存在,c++,arrays,ifstream,C++,Arrays,Ifstream,我的程序在包含各种命令的文本文件上运行。其中一个是“show”,它显示数组或数组中的元素。该命令可以有以下两种形式: 1) show arrayName 2) show arrayName arrayIndex 第一个命令显示整个数组,而第二个命令显示给定arrayIndex处的数组元素(检查索引是否存在后;否则给出错误)。我必须用一个输入流来处理这些问题。我了解如何执行此操作的总体思路,但一次只能实现一个功能,即我无法事先检查arrayIndex是否存在 对于以下代码行 in >
1) show arrayName
2) show arrayName arrayIndex
第一个命令显示整个数组,而第二个命令显示给定arrayIndex处的数组元素(检查索引是否存在后;否则给出错误)。我必须用一个输入流来处理这些问题。我了解如何执行此操作的总体思路,但一次只能实现一个功能,即我无法事先检查arrayIndex是否存在
对于以下代码行
in >> arrayName >> arrayIndex;
当存在整数值时,我可以在arrayIndex处显示元素。但是,当索引不存在时(必须显示整个数组),输入流将垃圾值分配给arrayIndex。有没有办法区分这两个命令?你可能需要在字符串中读取到行的结尾字符,然后自己解析,而不是依赖C++流输入操作符。输入流不“分配垃圾值”。它失败并保持
arrayIndex
不变(可能已经有一个垃圾值了)。你说“我无法检查arrayIndex是否存在”是什么意思???否则,您将如何确保索引在范围内???@Brandon命令可以有索引,也可以没有索引。如果没有arrayIndex(命令1),则显示整个阵列。如果命令具有arrayIndex(命令2),则只显示索引处的数组元素。int arrayIndex=-1;std::string arrayName=“”;在>>arrayName>>arrayIndex中;if(arrayIndex!=-1){....}
初始化变量或通过两次读取来执行:if(在>>arrayName&&in>>arrayIndex中){..}
。它仍然是一条流,只是读了两遍。