搜索"+"和"n"字符之间的所有子句

Search for all substings between "+" and "n" characters

本文关键字:子句 之间 字符 搜索      更新时间:2023-10-16

我正试图将一些公式从输入文件更改为"可读"形式。
目前,我需要读取字符串P中的所有数值(作为子字符串,稍后将其转换为int)。我感兴趣的所有值都在"+"answers"n"个字符之间(一个循环按此顺序,另一个循环则按相反顺序)
我需要一个循环,它可以找到所有它们并将它们保存到数组中(大小未知,因为我不知道字符串P有多长)。

输入示例(引号中的字符串p):

  1. "+n2+-n"
    第一个循环(从+到n),因此子字符串C为:","-"
    第二个循环(从n到+读取),因此子字符串E为:"2","

  2. "+2n3+3n2+n"
    第一个循环:"2"、"3"、"
    第二个循环:"3"、"2"、"

  3. "+-n14+-11n+1"
    第一个循环:"-","-11"
    第二个循环:"14","

如果解决方案需要,我可以在p字符串的末尾添加"+"。

ps。如果有人知道如何从示例3(+1或任何其他)中的字符串末尾提取常量,我将不胜感激。最困难的是,我不知道它会持续多久(到+1可以是-30万左右)。

请考虑查看正则表达式(一般情况下)和c++0x中的新std::regex类(特别是)。

C++0x:正则表达式

如果您想解析任何更复杂的模式,正则表达式总是一个优雅的解决方案。

我并没有真正理解你的问题,但当我有未知长度/超大输入时,我个人使用的是一个链表,你可以用动态内存分配在C++中实现,如果你发现你需要C语法,这在用malloc()的C中也是可能的。

与解析输入一样,您可以使用一个用1初始化的变量,每次到达子字符串的末尾时只需将其乘以-1,并使用涵盖每种情况的简单if语句。或者,您可以使用一个取"n"或"+"的char,因此在完成实际解析后,您必须使if语句只覆盖几行代码,并且每当您的光标到达上述char变量时,它就好像完成了另一个子字符串的工作一样。