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
ブースト1.64バージョン(GCC 8.0 in wandbox)と
しかし、C++ 03与えを与えますResult : abc.txt
また、::regex::ECMAScript
の代わりに::regex::extended
にしようとしましたが、それらは同じです。
boost::regex
と
std::regex
から不明
MAGIC矛盾がありますか?
私はそのようなオプションの事項を知りませんでした!ありがとう@ああ明 –