格式检查有什么好办法?比如{} ()的配对
我现在用的方法很笨。。。
希望高人指点下~
[解决办法]
为什么要检查呢?要养成好的编程习惯,写{}()总是先写出完整的一对,然后向里面填东西。
[解决办法]
这有个笨方法,从左到右,遇到 ({ 加1, 遇到 }) 减1,最后为0就对了
[解决办法]
遇到{ 压栈
遇到 } 弹出
最后栈为空则表示匹配成功
() 类似
[解决办法]
栈 栈 栈
还有,栈不是C语言里的,栈是一种数据结构
[解决办法]
是用代码来模拟栈结构, 不只指硬件上的栈啊,没什么操作命令
看一下数据结构关于栈的知识吧, C++实现栈比较简单, C没面向对象我没试过
[解决办法]
酱紫 ...
int foobar( const char* s )
{
char stk[1024];
int nstk = 0;
for( ; *s ; ++ s )
{
switch( *s )
{
case '( ': stk[nstk++] = ') ';break;
case '[ ':stk[nstk++] = '] ';break;
case '{ ':stk[nstk++] = '} ';break;
case ') ': case '] ': case '} ':
if( 0 == nstk || stk[ --nstk ] != *s )
return 0;
break;
}
}
return nstk == 0;
}
[解决办法]
....用正则表达式吧,boost库里有一个
[解决办法]
括号的匹配不能用正则文法描述 ...
[解决办法]
又不是 const char* const s , 当然可以 ++ ..