gpt4 book ai didi

c++ - 非常基本的正则表达式场景与我对 libstdc++-v3 的预期不同

转载 作者:行者123 更新时间:2023-11-30 02:05:07 25 4
gpt4 key购买 nike

我得到的行为与我的预期不同(也与 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;
}

在我的 Ubuntu Oneiric 盒子上,记下我是如何编译程序的,并记下我从 a.out 获得的输出:

$ g++ -std=c++0x test.cpp
$ ./a.out
true
m[1]=abbbb
m[2]=bcc

另一方面,在我的 Windows 机器上,使用 Visual Studio 2010 我已经:

C:> cl /EHsc test.cpp
C:> test.exe
true
m[1]=bbbb
m[2]=cc

我不是专家,但 Microsoft Visual Studio 似乎是正确答案。这是一个非常基本的场景,所以我想知道发生了什么。我无法相信这是一个错误,我无法相信这是 MS 和 GNU 之间在如此基本层面上的根本分歧。我怀疑我的配置或命令行中有问题。在安装默认的 Ubuntu 11.10 客户端和“apt-get install build-essentials”之后,我得到了我的 g++ 编译器和头文件。

可能是我遗漏了一个编译开关,或者是 MS 和 GNU 之间的根本分歧

最佳答案

<regex>在 libstdc++ 中仍然很大程度上未实现:http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011

关于c++ - 非常基本的正则表达式场景与我对 libstdc++-v3 的预期不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9804823/

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