'cbegin'未在此范围内声明

'cbegin' was not declared in this scope

本文关键字:范围内 声明 cbegin      更新时间:2023-10-16

我正在尝试学习C ,所以我写了一个简短的程序。这是我的C 代码:

#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main()
{
string line;
regex email(R"(w+@(w+.)+w+)");
while (getline(cin, line)) {
    smatch matches;
    auto current = cbegin(line);
    auto last = cend(line);
    while (current != last)
    {
        if (regex_search(current, last, matches, email))
        {
            ssub_match match = matches[0];
            current = match.second;
            cout << match.str() << endl;
        }
        else
        {
            break;
        }
    }
}
return 0;
}

我得到此错误:

=== Build file: "no target" in "no project" (compiler: unknown) ===
C:UsersPublicDocumentsCPP ScriptsusingStringType.cpp||In function 'int main()':
C:UsersPublicDocumentsCPP ScriptsusingStringType.cpp|13|error: 'cbegin' was not declared in this scope
C:UsersPublicDocumentsCPP ScriptsusingStringType.cpp|14|error: 'cend' was not declared in this scope
=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===

我不知道它们是否在您正在运行的版本中,但是如果是,则cbegin/cend应该在&lt; iterator>中。如果它们不是(我猜C 14是添加时(,那么您只需要使用line.cbegin()line.cend()