c++ - Microsoft C++ 异常:内存位置处的 std::regex_error

标签 c++ regex visual-c++ c++11

我使用 Visual C++ 2012 编写了以下代码来解析命令行参数。 这些命令行参数具有传统的 GNU 风格(--option)。

void parseCmdLines(int argc, wchar_t* argv[]) {
  for (auto i = 1; i < argc; ++i) {
    std::wstring arg(argv[i]);
    // I hope it can match the L"--config=../etc/my.conf"
    std::wregex regex(L"--config=(+*)");
    std::wsmatch match;
    std::regex_match(arg, match, regex);

    // TODO: ...
}

不幸的是,当我运行这个程序时,我遇到了异常。异常描述如下:

Microsoft C++ exception: std::regex_error at memory location 0x23F090.

如何解决这个问题?

最佳答案

您的问题可能出在 +* 上。

+ 表示出现在其前面的一个或多个内容,而 * 表示出现在其前面的零个或多个内容(因为有一个 (+ 之前,它不应该工作,因为这仅仅意味着一个组的开始,而对于 * 之前的 +,你不能真正说“零个或多个一个或多个”)。

您可能指的是 .* (即零个或多个任何内容)或 .+ (即一个或多个任何内容)?

关于c++ - Microsoft C++ 异常:内存位置处的 std::regex_error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015254/

相关文章:

c++ - 如何在字符串中查找包含破折号的字符串

c++ - Boost::geometry::multi_polygon 的负缓冲区

regex - 如何衡量字符串之间的相似度?

c++ - std::strings 的容量()、保留()和调整大小()函数

c++ - 在 Linux/C++ 中,发送到线程/进程的信号是否使其变为事件状态?

java - 字符串正则表达式无法分割闭括号中的单词

javascript - 如何使用正则表达式过滤特殊字符(不包括法语字母)

c++ - 如何更改通过 C++ 上的 FFMPEG 库提取的帧的配色方案?

c++ - dxvahd.h微软头文件中的#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)什么时候变为true

windows - 改变进度条颜色 win 32