C++ 非常基本的正则表达式场景与我对libstdc++-v3

C++ 非常基本的正则表达式场景与我对libstdc++-v3,c++,regex,g++,c++11,libstdc++,C++,Regex,G++,C++11,Libstdc++,我得到的行为与我的预期不同(也不同于Microsoft C++) 考虑以下test.cpp文件: #include <iostream> #include <ostream> #include <regex> int main( void ) { std::regex rx( "a(b+)(c+)d" ); std::string s( "abbbbccd" ); std::smatch m; bool f = regex_

我得到的行为与我的预期不同(也不同于Microsoft C++)

考虑以下test.cpp文件:

#include <iostream>
#include <ostream>
#include <regex>

int main( void )
{
    std::regex rx( "a(b+)(c+)d" );
    std::string s( "abbbbccd" );
    std::smatch m;

    bool f = regex_match( s, m, rx );
    std::cout << std::boolalpha << f << std::endl;
    if( f ) {
        std::cout << "m[1]=" << m[1] << std::endl;
        std::cout << "m[2]=" << m[2] << std::endl;
    }

    return 0;
}
另一方面,在我的Windows计算机上,使用Visual Studio 2010,我:

C:> cl /EHsc test.cpp
C:> test.exe
true
m[1]=bbbb
m[2]=cc
我不是专家,但Microsoft Visual Studio似乎是正确的答案。这是一个非常基本的场景,所以我想知道发生了什么。我不相信这是一个bug,我也不相信微软和GNU在如此基础的层面上存在根本性的分歧。我怀疑我的配置或命令行中有什么东西。在安装了默认的Ubuntu11.10客户端和“apt get install build essentials”之后,我得到了我的g++编译器和头文件

可能是我缺少的一个编译转换,或者MS和GNU之间的根本分歧在libstdc++中基本上还没有实现:

在libstdc++中基本上还没有实现:

在libstdc++中基本上没有实现:

这可能有帮助吗?也许这有帮助?
C:> cl /EHsc test.cpp
C:> test.exe
true
m[1]=bbbb
m[2]=cc