我想知道如何处理这个问题。我正在编写一个将读取JavaScript文件的C ++脚本。我想要做的是创建一个在其中找到的JavaScript函数的映射向量。我可以使用正则表达式轻松获得名称。但是,我还希望将整个函数本身存储为字符串。例如:
function myfunc (a,b) {
return a * b;
}
我知道如何获得字符串" myfunc"对于函数名称,但我也希望从function
到结束}
获取整个定义。我能想到的最好的方法是遍历从function
开始的字符串中的字符并保持开括号和右括号的计数,存储字符串位置,然后使用这些位置将子字符串复制到新变量。但这似乎是一件愚蠢的事情。
修改
这里是我正在谈论尝试的草图:
std::string::size_type finalBracket (std::string::size_type start) {
std::string startAt (parseablecode, start);
int bracketCount = 0;
std::string::size_type closePosition = 0;
bool initial = false;
for(char& c : startAt) {
if (c == '{') {
++bracketCount;
if (!initial) initial = true;
}
if (c == '}')
--breakCount;
if (initial && bracketCount == 0) {
closePosition += start;
break;
}
++closePosition;
}
return closePosition;
}