gpt4 book ai didi

c++ - Regex C 关于转义字符的帮助

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:01 26 4
gpt4 key购买 nike

我无法从我的字符串中提取 token 值:"JOIN #ROOM\r\n"我正在使用以下参数在 Mingw64 上编译我的代码:g++ tregex.cpp -o tregex.exe -std=gnu++11

我得到了这个错误,但出于某种原因不是我的异常:

This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. terminate called after throwing an instance of 'std::regex_error' what(): regex_error

这是我的代码:

#include <regex>
#include <string>
#include <iostream>
using namespace std;

//Tregex.cpp

int main(void) {
regex rgx("[[:cntrl:]]");
string str = "JOIN #ROOM\r\n";
smatch match;
try{
if(regex_search(str, match, rgx))
for(auto token:match) cout << token <<"\n";
cout<< endl;
}
catch(regex_error & e){
if( e.code() == regex_constants::error_escape )
cerr << "invalid escape character \n";
else if( e.code() == regex_constants::error_stack )
cerr << "regular expression is not big enough\n";
else
cerr << "exception caught: "<< e.what()<<"\n";
}
cin.get();
return 0;
}

最佳答案

FWIW,您的 C++ 代码没有任何问题,并且使用 Clang 和 libc++ 可以完美运行在我的 MacBook 上。

如上评论所示,<regex>是 LLVM 项目的 libc++ 中有效的功能之一,但 has never worked properly in the GNU project's libstdc++ .如果您的平台可用,您可以尝试切换到 libc++。

关于c++ - Regex C 关于转义字符的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com