我正在编写一个程序来转换用户提供的文本。我在测试程序中自己尝试了这种方法,它运行得很好;但是当我尝试将其实现到更大的程序中时,用户无法为程序提供存储输入。相关代码如下:
TimeZone timezone = Arrays.stream(objectArr)
.map(obj -> obj.getName().equals("timeZone") ? timezone = db.getTmezone(obj.getId()) : (obj.getName().equals("calendar") ? calendar = db.getTmezone(obj.getId()) : null))
我认为可能是程序在等待用户的另一个输入,所以我添加了一个我认为已经填充的变量,但它没有修复我的解决方案。在我看来,问题出在receiveInput函数中,但我可能错了。提前感谢您的任何帮助。
另外,我正在使用具有正确引用变量的函数原型。
答案 0 :(得分:0)
我看到两个问题:
1)在调用std::getline()
之后,您没有检查EOF条件。
2)您正在将std::getline
和>>
运算符混合在一起。现在,实际上没有任何技术上的错误,但是std::getline
和>>
运算符都有非常细微差别语义,当涉及到错误检查和输入消耗时,你需要100%正确,以便正确使用它们。
只需将>>
运算符的使用替换为std::getline
,因此您只使用std::getline
,并确保检查fail
()或{{ 1}}()。您将在stackoverflow.com上找到大量有关如何正确检查文件结束和故障情况的示例,eof
。