如何从特定索引开始读取字符串?

How to read a string starting from specific index?

我目前正在制作一个用 C++ 编写的 MFC 程序。我想要做的是我想创建一个函数来从特定索引中读取字符串。这是我正在处理的代码:

void CMFCApplication1Dlg::formatting(int start, int end, char *content, BinTreeNode *node){
    char *temp1 = "", *temp2 = "", *temp3 = "";
    int var1, var2;

    sscanf(&(content[start]), "%s %s %s", temp1, temp2, temp3);
    if (strcmp(temp1, "minus") == 0 || strcmp(temp1, "if") == 0){
        if (strcmp(temp1, "minus") == 0){
            node->isMinus = TRUE;
            var1 = atoi(temp2);
            var2 = atoi(temp3);
            node->operand1 = var1;
            node->operand2 = var2;
        }
        else if (strcmp(temp1, "if") == 0)
        {
            node->isIf = TRUE;
            var1 = atoi(temp2);
            var2 = atoi(temp3);
            node->operand1 = var1;
            node->operand2 = var2;
        }
    }
    else if (strcmp(temp3, "minus") == 0 || strcmp(temp3, "if") == 0){
        if (strcmp(temp3, "minus") == 0){
            node->isMinus = TRUE;
            var1 = atoi(temp1);
            var2 = atoi(temp2);
            node->operand1 = var1;
            node->operand2 = var2;
        }
        else if (strcmp(temp3, "if") == 0)
        {
            node->isIf = TRUE;
            var1 = atoi(temp1);
            var2 = atoi(temp2);
            node->operand1 = var1;
            node->operand2 = var2;
        }
    }
    else{
        MessageBox(_T("Invalid Format"), _T("Error"), MB_OK);
    }

}

问题是它发生了一些关于指针的错误。我不知道为什么代码会出现这种问题并需要一些帮助。请你做我的救星好吗?

请看一下这个实现:http://howtowriteaprogram.blogspot.ru/2010/11/lisp-interpreter-in-90-lines-of-c.html

语言解释器有两部分:

  1. Parsing: 解析组件接受输入程序的形式 一个字符序列,根据句法验证它 语言规则,并将程序翻译成内部 表示。在一个简单的解释器中,内部表示 是一个树结构(通常称为抽象语法树) 密切反映语句或表达式的嵌套结构 该程序。在称为编译器的语言翻译器中有 通常是一系列内部表示,从一个 抽象语法树,并发展到指令序列 可以直接由计算机执行。参考提供的read()read_from()tokenize()函数实施。

  2. Execution: 然后根据内部表示进行处理 到语言的语义规则,从而执行 计算。执行函数调用eval().