如何读取从特定索引开始的字符串
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
语言解释器有两个部分:
-
解析:解析组件采用以下形式的输入程序一系列字符,根据句法进行验证语言规则,并将程序翻译成内部代表。在一个简单的解释器中,内部表示是一种树结构(通常称为抽象语法树)紧密地反映中语句或表达式的嵌套结构程序。在一个称为编译器的语言翻译器中通常是一系列内部表示,以抽象语法树,并前进到指令序列其可以由计算机直接执行。请参阅所提供实现中的read()、read_from()和tokenize()函数。
-
执行:然后根据根据语言的语义规则,从而实现计算执行函数被称为eval()。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在C++中返回向量的从零开始的索引
- 尝试查找从索引 0 开始的偶数长度子字符串
- 是否可以从特征中的 1 开始索引矩阵?
- C++For循环索引行为怪异(它从3而不是0开始)
- 在匹配另一个模式的字符串中找到最短子字符串的开始和结尾索引
- 如何读取从特定索引开始的字符串
- 为什么数组索引从"0"开始
- 鼠标点击坐标的索引从0或1开始
- 开始和结束数组索引算法
- Boost.MultiArray 任意开始和结束索引