【发布时间】:2018-02-12 07:14:02
【问题描述】:
class Node_Str{
public:
string name;
string value;
string type;
Node_Str(string name,string value,string type){
name=name;
value=value;
type=type;}};
static stack<Node_Str> s;
void find_token(string input){
int cursor=0;
string current="";
while(cursor<input.length()){
char value;
value=input[cursor];
cout<<value<<endl;
if(value=='('||value==')'||value=='+'||value=='-
'||value=='*'||value=='/'){
Node_Str* p=new Node_Str("pare",string(1,value),"Pare");
s.push(*p);
cursor++;
delete p;}
if(value==' '){
cursor++;
}
if(value=='1'||value=='2'||value=='3'||value=='4'){
Node_Str* p=new Node_Str("num",string(1,value),"Number");
s.push(*p);
cursor++;
delete p;}}}
int main(){
while(!s.empty()){
cout<<s.top().value<<" ";
s.pop(); }
return 0; }
find_token 函数应该用空格分隔输入字符串,并使用该字符串的值构造Node_Str 对象。然后在
主要功能,我想打印它。字数有限。只是'1','2','3','4','+,'-','*','/'。
输入是 4 + 4 ,输出应该是 4+4。但是,没有输出。
【问题讨论】:
-
你没有删除使用new int分配的内存,那就是内存泄漏
-
可能你忘了打
find() -
程序可以运行而没有错误或内存泄漏。 这种说法是错误的。您正在泄漏内存。您正在分配内存 uisng
new int(i),但没有代码可以释放该内存。 -
你的意思是如果我删除指针然后我可以得到正确的输出?更重要的是,我确信 main() 函数返回 0。