我写了以下函数:
void check(int* input){
do{
std::cout<<"Enter integer!";
std::cin>>*input;
}while(!std::cin);
}
我在主函数中使用它如下:
int main()
{
int *k;
k=new int;
check(k);
std::cout<<"Value of the k is:"<<*k<<"in address"<<k;
return 0;
}
问题是当用户输入一些字符时,编译器继续打印“输入整数!”,不停,我必须手动停止编译。
答案 0 :(得分:1)
正在发生的事情是流正在破碎。基本上,该程序看到一个角色进入一个不是一个角色并且变得怪异的东西,即UB。这是一个简单的修复程序,您可以在任何包含数据验证的初级书籍中找到它:
listRemoveMarkers = listCurrentPostsMarkers.Where(x =>
!listLocations.Exists(y => y.Latitude == x.Position.Latitude
&& y.Longitude == x.Position.Longitude)).
ToList();
这将测试流是否已损坏,清除该标志并忽略该行上的其余输入。