gpt4 book ai didi

c++ - 我程序中的 cin 不能正常工作。我该如何解决?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:58:32 24 4
gpt4 key购买 nike

我对 cin 有一些疑问。当我输入字符而不是整数时,cin 不起作用,之后我什至无法输入新值。我应该怎么办?我已经尝试过 fflush(stdin)

struct PersonList
{
Person person;
PersonList* personListPtr;
};


void addPerson(PersonList*& ptr, int position);
void deletePersonList(PersonList* ptr);




int main()
{
PersonList* personListPtr = NULL;

int flag = 0;
int pos = 0;
int i;

while(flag != 27)
{
system("cls");
cout << "1 - add objects\n"
<< "2 - delete objects\n"
<< "ESC - exit\n";
switch(flag)
{
case '1':
cout << "Enter position: ";
**cin >> pos;**
addPerson(personListPtr, pos);
break;
case '2':
break;
case '3':
break;
}
flag = _getch();
}


deletePersonList(personListPtr);

return 0;
}

谢谢。

最佳答案

您似乎混合了几种成语。我不知道是什么_getch() 确实如此,但我无法想象它是怎样的与 std::cin 兼容; std::cin 将有(或可能有)提前阅读,例如阅读您的旗帜字符。你不能简单地混合来自同一来源的不同流。

至于你描述的具体问题,一旦你进入无法转换为您正在阅读的内容的内容,流进入错误状态(你应该检查在使用该值之前),并且对它的所有操作都变为空操作直到您清除错误 (std::istream::clear())。但那是不会解决其他问题。如果你坚持使用像 _getch() 这样的东西,那么你必须在所有您的输入,建立一个用于输入位置的字符串,以及使用 std::istringstream 进行转换。取决于什么功能确实如此,您可能还必须处理一些事情比如退格键、回车键,甚至回显。

关于c++ - 我程序中的 cin 不能正常工作。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13808192/

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