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]==')' )