[英]Split string and get values before different delimiters
鉴于代码:
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);
}
我认为你应该阅读std::string::find_first_of function 。
Searches the string for the first character that matches any of the characters specified in its arguments.
我无法理解您真正想要实现的目标。 假设这是使用find_first_of
函数的一个示例。
list<string> split(string lines)
{
list<string> result;
size_t position = 0;
while((position = lines.find_first_of("{};\n")) != string::npos)
{
if(lines[position] != '\n')
{
result.push_back(lines.substr(0, position+1));
}
lines = lines.substr(position+1);
}
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.