我有一段宏定义的代码"defined(FUNCTION_EXT_RECORD) && !defined(SWITCH_LOCAL_PREVIEW_STREAMTYPE) && !defined(SWITCH_STREAM_NO_MEMORY)",请用c++写一段代码将其中所有的宏提取出来,并放到vector中
时间: 2024-02-18 09:04:01 浏览: 91
可以使用正则表达式来提取这些宏定义,然后将它们放入一个 vector 中。
以下是示例代码:
```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\\((.*?)\\)");
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
```
阅读全文