我是 C++ 的新手,我正在编写一个从文件中读取代码的程序,并将其每一部分分类为标识符、括号、关键字等。
我正在使用 if else 语句执行此操作,除了括号和分号外,它工作正常。
例如if(a== "=" ) cout << "a is the equal operator"
有效,但if(a== ";" ) cout << "a is a semicolon"
没有。我也尝试使用比较方法,它也不起作用。
有人可以告诉我为什么会这样吗?
谢谢
void checkString(string a)
if(a=="("){
cout << "RPAR: " << a + "\n";
}
else if(a==")"){
cout << "LPAR: " << a + "\n";
}
else if(a.compare("{") == 0){
cout << "LBRAC: " << a + "\n";
}
else if(a=="}"){
cout << "RBRAC: " << a + "\n";
}
else{
cout << "IDENTIFIER: " << a + "\n";
}
}
int main (){
std::vector<string> STRINGS;
string STRING;
ifstream infile;
infile.open("m.c");
while(getline(infile,STRING,' ')){
STRINGS.push_back(STRING);
}
infile.close();
for(int i=0; i<STRINGS.size(); i++){
checkString(STRINGS[i]);
}
return 0;
}
如果 a 是括号或分号,程序将打印 IDENTIFIER: {。