这个例子是一个非常基本和简单的程序。
我希望能够在用户想要的时候退出函数。
在add()函数中,我可以退出
cin>>NumA;
键入9999行,它将返回菜单。但是我只能在这一点退出,所以如果我想在任何时候退出我必须添加
if (NumA == 9999)
{
return;
}
通过所有程序。我希望能够在函数内部随时退出,如果可以通过按键(如退格键)来完成,则更好。 我想有更好的方法来实现这个,我该怎么做?也许是另一个功能:^)
void add()
{
cout << "Addition" << endl;
cout << "Number A: ";
int NumA;
cin>>NumA;
if (NumA == 9999)
{
return;
}
cout << "Number B: ";
int NumB;
cin>>NumB;
int Result = NumA + NumB;
cout << NumA << " + " << NumB << " = " << Result<<endl;
}
int main()
{
int Op;
do
{
cout << "Main" << endl;
cout << "1) Add" << endl;
cout << "2) Another function call" << endl;
cout << "3) Yet another function call" << endl;
cout << "n) ..." << endl;
cout << "0, to exit" << endl;
cin>>Op;
switch (Op)
{
case 1:
{
add();
}
default:
{
break;
}
}
}
while (Op != 0);
}
答案 0 :(得分:0)
最简单的选择是处理其中一个出口点 切换案例陈述如下。
***另外不要忘记在每个案例陈述后添加break语句
switch (Op)
{
case 1:
add();
break ;
case 0:
return 0 ;
break ;
default:
cout << "Invalid option" << endl;
break;
}
由于
答案 1 :(得分:0)
好吧,我试着根据你的描述写一个小样本程序。我不确定它是否适用于Visual Studio。我使用g ++在MacOS上编译它。下面的代码可能不是编写程序的好方法,但它有用,可能对你的事业有帮助。
我修改了你的代码以制作一个更简单的程序,以便更好地理解 -
#include <signal.h>
#include <stdlib.h>
#include <iostream>
int sum = 0;
int main(); // Prototyping main() is also not recommended
void siginthandler(int param)
{
std::cout << "[INTERRUPT] Sum so far => " << sum << "\n";
main(); // main() shouldn't be called here, but rather some menu function
}
void add()
{
std::cout << "Addition\n";
std::cout << "Enter a number : ";
int NumA;
std::cin >> NumA;
sum += NumA;
std::cout << "[ADD] Sum so far => " << sum << "\n";
}
int main()
{
// Register the SIGINT handler with the main()
signal(SIGINT, siginthandler);
int Op;
do
{
std::cout << "Main" << std::endl;
std::cout << "1) Add" << std::endl;
std::cout << "2) Another function call" << std::endl;
std::cout << "0, to exit" << std::endl;
std::cin>>Op;
switch (Op)
{
case 1:
{
add(); break;
}
default:
{
break;
}
}
}
while (Op != 0);
std::cout << "[MAIN] Sum so far => " << sum << "\n";
exit(0);
}
它在g ++上编译,所以我不确定它是否适用于您的情况。
以下是执行程序时得到的输出:
Abhinavs-MacBook-Pro:test abhinav$ ./a.out Main 1) Add 2) Another function call 0, to exit 1 Addition Enter a number : 34 [ADD] Sum so far => 34 Main 1) Add 2) Another function call 0, to exit 1 Addition Enter a number : 56 [ADD] Sum so far => 90 Main 1) Add 2) Another function call 0, to exit ^C[INTERRUPT] Sum so far => 90 Main 1) Add 2) Another function call 0, to exit 0 [MAIN] Sum so far => 90 Abhinavs-MacBook-Pro:test abhinav$
我希望上面的代码有所帮助。愿原力与你同在..!! :)