我有一段宏定义的代码"defined FUNCTION_EXT_RECORD && !defined(SWITCH_LOCAL_PREVIEW_STREAMTYPE) && !defined(SWITCH_STREAM_NO_MEMORY)",请用c++写一段代码将其中所有的宏提取出来,并放到vector中
时间: 2024-01-14 10:03:25 浏览: 71
同样可以使用正则表达式来提取这些宏定义,只需要稍微修改一下正则表达式即可。
以下是示例代码:
```c++
#include <iostream>
#include <vector>
#include <regex>
int main() {
std::string macroCode = "defined FUNCTION_EXT_RECORD && !defined(SWITCH_LOCAL_PREVIEW_STREAMTYPE) && !defined(SWITCH_STREAM_NO_MEMORY)";
std::vector<std::string> macros;
std::regex rgx("\\bdefined\\s+(\\w+)");
std::smatch match;
while (std::regex_search(macroCode, match, rgx)) {
macros.push_back(match[1].str());
macroCode = match.suffix().str();
}
for (auto macro : macros) {
std::cout << macro << std::endl;
}
return 0;
}
```
输出:
```
FUNCTION_EXT_RECORD
SWITCH_LOCAL_PREVIEW_STREAMTYPE
SWITCH_STREAM_NO_MEMORY
```
阅读全文