VS2017亲测可行
#include<iostream>
#include<stack>
#include<string>
using namespace std;
void function(string str) {//判断给定括号是否匹配
int L, R, i;//L表示左括号,R表示右括号
stack<int>S;
L = R = i = 0;
while (str[i] != '\0') {
if (!S.empty())
L = S.top();
switch (str[i]) {
case '{':
R = 1; break;
case '[':
R = 2; break;
case '(':
R = 3; break;
case '}':
R = 4; break;
case ']':
R = 5; break;
case ')':
R = 6; break;
default:
cout << "输入错误!"; return;
}
if (L + 3 == R)
S.pop();
else
S.push(R);
i++;
}
if (!S.empty())
cout<<"不匹配";
else
cout<<"匹配";
}
int main() {
string str;
cin >> str;
function(str);
return 0;
}