1
我使用boost::regex
編碼,它似乎不會給出與C++ 11的std::regex
相同的結果。boost :: regex和std :: regex之間的不一致?
考慮下面的簡單代碼:
#include <string>
#include <iostream>
#if defined(_MSC_VER) || (__cplusplus >= 201103L)
#include <regex>
#else // defined(_MSC_VER) || (__cplusplus >= 201103L)
#include <boost/regex.hpp>
#endif // defined(_MSC_VER) || (__cplusplus >= 201103L)
namespace {
#if defined(_MSC_VER) || (__cplusplus >= 201103L)
using std::regex;
using std::regex_replace;
#else // defined(_MSC_VER) || (__cplusplus >= 201103L)
using boost::regex;
using boost::regex_replace;
#endif // defined(_MSC_VER) || (__cplusplus >= 201103L)
} // namespace
int main() {
std::string input = "abc.txt";
::regex re("[.]", ::regex::extended);
std::string output = ::regex_replace(input, re, "\\.");
std::cout << "Result : " << output << "\n";
return 0;
}
C++ 11版本(GCC 5.4,GCC 8.0 in wandbox,MSVC 2015年)給出了Result : abc\.txt
然而,C++ 03與升壓1.64版本(GCC 8.0 in wandbox)給出Result : abc.txt
我也試過::regex::extended
而不是::regex::ECMAScript
但它們是一樣的。
是否有不明MAGIC從boost::regex
和std::regex
不一致?
我不知道這樣的選項很重要!謝謝@何明 –