之前得到的值:分割字符串,并给予代码不同的分隔符
procedure example {
x=3;
y = z +c ;
while p {
b = a+c ;
}
}
我想用分隔符{
,;
和}
分裂代码。 分割后,我想在它与分隔符一起获取信息。
因此,例如,我想获得procedure example {
,x=3;
,y=z+c;
,}
。然后我想将它推入list<pair<int, string>> sList
。有人可以解释如何在C++中完成这项工作吗?
我试过下面这个例子:Parse (split) a string in C++ using string delimiter (standard C++),但我只能得到一个令牌。我想要整条线。我是C++的新手,列表,分裂等等令人困惑。
编辑:所以,我已经实现了它,这是代码:
size_t openCurlyBracket = lines.find("{");
size_t closeCurlyBracket = lines.find("}");
size_t semiColon = lines.find(";");
if (semiColon != string::npos) {
cout << lines.substr(0, semiColon + 1) + "\n";
}
然而,似乎它不能单独分开根据分号,openBracket和closeBracket。任何人都知道如何分别基于这些字符进行分离?
第二编辑: 我已经完成了这个(代码如下)。它正确分离,我有一个开放的大括号。我打算在下面的评论区域中将该值添加到列表中。但是,当我考虑它时,如果我这样做,那么列表中的信息顺序将会混乱。因为我有另一个while循环根据打开的大括号分开。关于如何在订单中添加信息的任何想法?
Example:
1. procedure example {
2. x=3;
3. y = z+c
4. while p{
等等。
while (semiColon != string::npos) {
semiColon++;
//add list here
semiColon = lines.find(';',semiColon);
}
在你想要得到的例子中,while循环缺失。这是故意的吗?如果是的话,你的确切标准是什么来解析代码? – honk
@honk对不起,如果我不清楚。这只是我想要的东西的一个例子。同时也包括在内。我现在已经成功地将它们分开了,现在正试图将它放在一个列表中。 – user3453250
User @ user3188346建议在他的回答中使用'find_first_of'函数。这应该可以帮助你保持线条的顺序。你尝试过吗? – honk