//只是一个括号匹配检验的程序,假设只有(和【两种。
#include "stdafx.h"
#include <string>
#include <vector>
#include <iterator>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"输入一个字符串:"<<endl;
string str;
cin>>str;
vector <char> t_vBracket; //定义一个向量来实现栈的结构,存放括号
for(string::const_iterator it = str.begin();it != str.end();++it)
{
switch (*it)
{
case '[':
case '(': t_vBracket.push_back(*it); break; //如果遇到(和【就压栈
//如果遇到)和】就检测栈中是否有值,如果有,在对比是否匹配,若匹配就出栈
case ']':
if(t_vBracket.empty()) {
cerr<<"括号不匹配";
return 0;
}
else if (t_vBracket.back()=='[')
t_vBracket.pop_back();
else
{
cerr<<"括号不匹配";
return 0;
}
break;
case ')':
if(t_vBracket.empty()) {
cerr<<"括号不匹配";
return 0;
}
else if (t_vBracket.back()=='(')
t_vBracket.pop_back();
else {
cerr<<"括号不匹配";
return 0;
}
break;
default: break;
}
}
if (t_vBracket.empty()) cerr<<"括号匹配!";
else cerr<<"括号不匹配!";
return 0;
}
括号的匹配检验
最新推荐文章于 2024-02-07 10:56:18 发布