搜索"+"和"n"字符之间的所有子句
Search for all substings between "+" and "n" characters
我正试图将一些公式从输入文件更改为"可读"形式。
目前,我需要读取字符串P中的所有数值(作为子字符串,稍后将其转换为int)。我感兴趣的所有值都在"+"answers"n"个字符之间(一个循环按此顺序,另一个循环则按相反顺序)
我需要一个循环,它可以找到所有它们并将它们保存到数组中(大小未知,因为我不知道字符串P有多长)。
输入示例(引号中的字符串p):
-
"+n2+-n"
第一个循环(从+到n),因此子字符串C为:","-"
第二个循环(从n到+读取),因此子字符串E为:"2"," -
"+2n3+3n2+n"
第一个循环:"2"、"3"、"
第二个循环:"3"、"2"、" -
"+-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变量时,它就好像完成了另一个子字符串的工作一样。
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 如何理解C++标准N3337中的expr.const.cast子句8
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 搜索"+"和"n"字符之间的所有子句
- C++11参数子句中声明符和抽象声明符之间的歧义
- 私有子句中的变量和OpenMP中并行区域中定义的变量之间有什么区别吗?