C++ 通过引用传递的c字符串的输入验证 #包括“cstack.h” #包括 #包括 使用名称空间std; bool-isValidExpression(CStack&,char*); 内部主(空) { char表达式[21]; 表达式[0-21]=0; cout>表达; CStack stack1; if(isValidExpression(stack1,表达式)=true) { 无法尝试更新: #include "cstack.h" #include <iostream> #include <cstring> using namespace std; bool isValidExpression (CStack&, char*); int main (void) { char expression[21]; expression[0-21]=0; cout<< "Enter an expression: "; cin >>expression; CStack stack1; if (isValidExpression (stack1, expression)==true) { cout << "\nIt's a valid expression"; } else { cout << "\nIt's NOT a valid expression"; } return 0; } bool isValidExpression (CStack& stackA, char* strExp) { for(int a=0;a<21 && strExp[a]!=0;a++) { if(strExp[a]="}"||"]"||")") //This is the issue right here { cout<<"Action A" <<endl; } else { stackA.push(strExp[a]); } } return true; }

C++ 通过引用传递的c字符串的输入验证 #包括“cstack.h” #包括 #包括 使用名称空间std; bool-isValidExpression(CStack&,char*); 内部主(空) { char表达式[21]; 表达式[0-21]=0; cout>表达; CStack stack1; if(isValidExpression(stack1,表达式)=true) { 无法尝试更新: #include "cstack.h" #include <iostream> #include <cstring> using namespace std; bool isValidExpression (CStack&, char*); int main (void) { char expression[21]; expression[0-21]=0; cout<< "Enter an expression: "; cin >>expression; CStack stack1; if (isValidExpression (stack1, expression)==true) { cout << "\nIt's a valid expression"; } else { cout << "\nIt's NOT a valid expression"; } return 0; } bool isValidExpression (CStack& stackA, char* strExp) { for(int a=0;a<21 && strExp[a]!=0;a++) { if(strExp[a]="}"||"]"||")") //This is the issue right here { cout<<"Action A" <<endl; } else { stackA.push(strExp[a]); } } return true; },c++,cstring,c-strings,C++,Cstring,C Strings,致: 尝试更新: #include "cstack.h" #include <iostream> #include <cstring> using namespace std; bool isValidExpression (CStack&, char*); int main (void) { char expression[21]; expression[0-21]=0; cout<< "Enter an expressi

致:

尝试更新:

#include "cstack.h"
#include <iostream>
#include <cstring>
using namespace std;

bool isValidExpression (CStack&, char*);

int main (void)
{
    char expression[21];
    expression[0-21]=0;
    cout<< "Enter an expression: ";
    cin >>expression;
    CStack stack1;

    if (isValidExpression (stack1, expression)==true)
    {
        cout << "\nIt's a valid expression";
    }
    else
    {
        cout << "\nIt's NOT a valid expression";
    }
    return 0;
}

bool isValidExpression (CStack& stackA, char* strExp)
{
    for(int a=0;a<21 && strExp[a]!=0;a++)
    {
        if(strExp[a]="}"||"]"||")") //This is the issue right here
        {
            cout<<"Action A" <<endl;
        }
        else
        {
            stackA.push(strExp[a]);
        }
    }
    return true;
}
致:

if(strExp[a]=“}”| | |“]“| | |”)
将始终为真,因为它使用
“]”
”“
作为
|
运算符的布尔值,字符串常量本身解析为非零的
常量char*
s,被视为
。此外,单个
=
是赋值,而不是比较,这意味着如果
条件为

上述条件如下:

if(为
“}”生成的指针的低位8位)
[true]
或者为
“]”
生成的指针为非零[true]
或者为“
生成的指针为非零[真])

我想你的意思是

if(strExp[a]='}'| | strExp[a]=']]'.| | strExp[a]=''))

还请注意,双引号在此处替换为单引号。检查单个字符时使用单引号,而不是双引号。还可以使用
==
进行比较

如果您使用
g++
进行编译,您应该使用
g++-Wall-Wextra
启用警告,任何正常的编译器都会出于所述的所有原因在该行生成警告。

如果(strExp[a]=“}”|“]“|””)
将始终为真,因为这使用了
“]”
”“
作为
|
运算符的布尔值,字符串常量本身解析为非零的
常量char*
s,它们被视为
true
。此外,单个
=
是赋值,而不是比较,这意味着如果
条件为
true

上述条件如下:

if(为
“}”生成的指针的低位8位)
[true]
或者为
“]”
生成的指针为非零[true]
或者为“
生成的指针为非零[真])

我想你的意思是

if(strExp[a]='}'| | strExp[a]=']]'.| | strExp[a]=''))

还请注意,双引号在此处替换为单引号。检查单个字符时使用单引号,而不是双引号。还可以使用
==
进行比较


如果您使用
g++
进行编译,则应使用
g++-Wall-Wextra
启用警告,任何正常的编译器都会出于所述的所有原因在该行生成警告。

==
,而不是
=
。因为它是通过引用传递的,所以这只会编辑字符串。
=
,而不是
=
。因为它是通过引用传递的,所以这只会编辑字符串。
if(strExp[a]=='}'|| strExp[a]==']'|| strExp[a]==')' )