如何读取从特定索引开始的字符串? 我现在正在制作一个用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); } }

如何读取从特定索引开始的字符串? 我现在正在制作一个用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); } },c++,mfc,C++,Mfc,问题是,它在重新读取指针时发生了一些错误。我不知道为什么代码会出现这样的问题,需要一些帮助。请你做我的救世主好吗?请看一下这个实现: 语言解释器由两部分组成: 解析:解析组件以 一个字符序列,根据语法验证它 语言规则,并将程序翻译为内部 代表性。在一个简单的解释器中,内部表示 树结构(通常称为抽象语法树)是 紧密镜像中语句或表达式的嵌套结构 节目。在称为编译器的语言翻译器中 通常是一系列内部表示,从 抽象语法树,并前进到一系列指令 可以由计算机直接执行的。请参阅提供的实现中的read()、rea

问题是,它在重新读取指针时发生了一些错误。我不知道为什么代码会出现这样的问题,需要一些帮助。请你做我的救世主好吗?

请看一下这个实现:

语言解释器由两部分组成:

  • 解析:解析组件以 一个字符序列,根据语法验证它 语言规则,并将程序翻译为内部 代表性。在一个简单的解释器中,内部表示 树结构(通常称为抽象语法树)是 紧密镜像中语句或表达式的嵌套结构 节目。在称为编译器的语言翻译器中 通常是一系列内部表示,从 抽象语法树,并前进到一系列指令 可以由计算机直接执行的。请参阅提供的实现中的read()、read_from()和tokenize()函数

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


  • 如果你在C++中工作,你应该使用对象而不是char *变量。它将允许您使用许多更简单的技巧,例如运算符==或!=而不是strcmp。您将使用
    substr
    成员函数得到您的解决方案。您试图解析什么?为什么不使用std::string或MFC CString进行解析?您的代码基本上是纯C。感谢您的快速回复。但还有一个问题。如果我不知道将从字符串中读取的字符串的大小,该怎么办?在这种情况下,sscanf方法不是比cstring中的substr方法更可靠吗?Andrew,我要解析的字符串是这样用LISP风格编写的代码。((12减号)(34如果)减号)哇,那代码相当复杂。我应该花点时间看看代码,其实很简单。主要的想法是你的解释器需要两样东西:词法分析器(标记器)和表达式求值器。与其发布链接,不如发布链接所解释内容的简要描述。如果链接不再有效,将来会发生什么?谢谢你的反馈。我补充了简短的解释。