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

How to read a string starting from specific index?

本文关键字:索引 开始 字符串 何读取 读取      更新时间:2023-10-16

我目前正在制作一个用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. 解析:解析组件采用以下形式的输入程序一系列字符,根据句法进行验证语言规则,并将程序翻译成内部代表。在一个简单的解释器中,内部表示是一种树结构(通常称为抽象语法树)紧密地反映中语句或表达式的嵌套结构程序。在一个称为编译器的语言翻译器中通常是一系列内部表示,以抽象语法树,并前进到指令序列其可以由计算机直接执行。请参阅所提供实现中的read()read_from()tokenize()函数。

  2. 执行:然后根据根据语言的语义规则,从而实现计算执行函数被称为eval()