C++ - 为什么我的程序在再次调用函数后关闭?

C++ - Why does my program close after calling a function again?

本文关键字:函数 调用 为什么 我的 程序 C++      更新时间:2023-10-16

我是C++新手,不知道这里发生了什么......

基本上我有一个带有一堆 Log("..."( 语句的函数(基于文本的冒险( 然后我想基本上创建一个 try-catch 块,以查看用户是否尝试打印任何不是 1 或 2 的内容,因为这些是唯一的 2 个选择。我注意到当您在控制台中输入字符串时,它会将其转换为 0,所以基本上我的代码是-

void myfunciton()
{
top:
Log("Choose...");
Log("(1) ...");
Log("(2) ...");
std::cout << std::string(11, 'n') << std:endl;
std::cout << "Enter a number: ";
std::cin >> userchoice; // Userchoice is a global variable defined above and set to 100.
if (userchoice == 0) {
userchoice = 100;
goto top;
}

而不是行转到顶部;我也尝试只调用 myFunction((;但它给了我相同的结果...代码再次运行,我看到了我的故事,但我无法输入另一个数字。它在我的控制台内打印出"输入一个数字:"一行,但立即打印"退出代码 0 按任意键关闭..."

我只是不明白为什么它不让我再次输入另一个数字。任何帮助将不胜感激:)

因为数字提取器在输入缓冲区中留下了非数字。 试试这个:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');

并避免使用 goto-s。

您也可以使用:while (std::cin >> x)(x 代表您的输入(以获得更好的代码流。