前辈高手帮忙看看我的程序
写这段程序主要是练习异常处理和STL,程序在VC++是可以正常运行,但不知道有没有什么不足,是否能写的更完美。
//2013.7.26
//栈的几个操作
#include <iostream>
#include <stack>
using namespace std;
int main()
{
char select[100];
//用于选择操作的变量,为了异常处理,选择了字符数组(处理用户输入字符串的情况)
char value;
int countNum;
stack<char> stk; //初始化栈
while(select[0] != '5')
{
cout << "请选择您的操作:" << endl;
cout << "1.入栈 2.出栈 3.返回当前栈内元素个数" <<endl;
cout << "4.测试栈是否非空 5.退出" << endl;
try
{
cin >> select;
if (select[0] < 49 || select[0] > 53 || select[1])
//如果用户输入的是非0~6的数字或字符,或者字符串,抛出异常
throw select[100]; //抛出异常
}
catch(char) //捕获异常
{
cout << "输入的不是1~6整数!" << endl; //输出异常
continue; //若输入错误跳过执行重新输入
}
switch(select[0])
{
case '1':
cout << "输入要入栈的值" << endl;
cin >> value;
stk.push(value);
break;
case '2':
stk.pop();
break;
case '3':
countNum = stk.size();
cout << "当前栈内元素个数为" << countNum << endl;
break;
case '4':
if(stk.empty())
cout << "栈已空" << endl;
else
cout << "栈非空" << endl;
break;
case '5':
cout << "退出bye,bye!" << endl;
break;
}
}
return;
}
[解决办法]
写得挺不错的。
[解决办法]
try
{
cin >> select;
if (select[0] < 49
[解决办法]
select[0] > 53
[解决办法]
select[1])
//如果用户输入的是非0~6的数字或字符,或者字符串,抛出异常
throw select[100]; //抛出异常
}
catch(char) //捕获异常
{
cout << "输入的不是1~6整数!" << endl; //输出异常
continue; //若输入错误跳过执行重新输入
}
49/53直接换成'1'/'6'会不会更好?
100是不是越界了?
抛出invalid_input异常是否会更清晰?
[解决办法]
不错 ,代码风格挺好!
[解决办法]
尽量用 CHAR8 代替 char,
用 INT32代替int 这种数据类型.
类似这样.
好吧,最后一句程序写得不错.~