C:\Program Files\CodeBlocks\sushuji\main.cpp|10|error: 'regex_macth' was not declared in this scope|
时间: 2023-08-05 20:06:42 浏览: 144
在C++代码中,您遇到了一个错误:`'regex_macth' was not declared in this scope`。这个错误是因为您拼写错误,正确的函数名应该是`regex_match`而不是`regex_macth`。
请将代码中的`std::regex_search`更正为`std::regex_match`,然后重新编译您的程序。这样应该可以解决该错误。
以下是更正后的代码:
```cpp
#include <iostream>
#include <regex>
#include <string>
#include <vector>
#include <sstream>
long getResult(const std::string& str) {
std::regex pattern("(\\d+)\\$(\\d+)");
std::string temp = str;
while (true) {
std::smatch matches;
if (!std::regex_match(temp, matches, pattern)) break;
std::string subStr = matches[0].str();
long x = std::stol(matches[1].str());
long y = std::stol(matches[2].str());
temp = std::regex_replace(temp, std::regex(subStr), std::to_string(3 * x + y + 2));
}
std::vector<long> numbers;
std::istringstream iss(temp);
std::string token;
while (std::getline(iss, token, '#')) {
numbers.push_back(std::stol(token));
}
long result = 0;
for (const long& num : numbers) {
result = 2 * result + 3 * num + 4;
}
return result;
}
int main() {
std::string str;
std::cin >> str;
std::cout << getResult(str) << std::endl;
return 0;
}
```
请注意,我修正了`std::regex_match`函数的拼写,并将其与正则表达式模式进行匹配。这样,您不应再遇到该特定错误。
阅读全文