我目前在我的Qt应用程序中使用C++ 11功能.但是,我想在我的应用程序中使用一些新的C++ 14特性.
要在Qt应用程序中启用C++ 11,只需在qmake项目文件中添加一行,即:
CONFIG += c++11
Run Code Online (Sandbox Code Playgroud)
或者对于早期版本:
QMAKE_CXXFLAGS += -std=c++1y
Run Code Online (Sandbox Code Playgroud)
我已经尝试用C++ 14做同样的事情,但它没有用.我改变了上面提到的qmake项目的行,如下所示:
CONFIG += c++14
Run Code Online (Sandbox Code Playgroud)
或者对于早期版本:
QMAKE_CXXFLAGS += -std=c++1y
Run Code Online (Sandbox Code Playgroud)
之后,在尝试构建项目时出现了许多以前不存在的编译错误.该项目编译良好,但是,如果我尝试使用任何C++ 14功能,我会收到编译错误.这是一个例子:
template<typename T>
constexpr T pi = T(3.1415926535897932385);
Run Code Online (Sandbox Code Playgroud)
这是相应的错误:
main.cpp:7: error: template declaration of 'constexpr const T pi'
constexpr T pi = T(3.1415926535897932385);
^
Run Code Online (Sandbox Code Playgroud)
在QtCreator中使用qmake项目时如何启用C++ 14功能?
我使用的是Qt 5.3.2,Qt Creator 3.2.1和MinGW 4.8.2 32位.
为了简单起见,假设我们有以下字符串:
“约翰爱玛丽,玛丽爱杰克,而杰克不关心约翰和玛丽。”
假设我想使用正则表达式来更改该故事的角色。
约翰 -> 约瑟夫
玛丽 -> 杰西卡
杰克 -> 基思
当然,我可以一次更改其中一项。
但我想知道是否可以仅通过一个正则表达式替换来更改所有这些内容,例如“多个替换”或“条件替换”。
就像是:
正则表达式:(?:(?<name1>John)|(?<name2>Mary)|(?<name3>Jake))
替代品:(?(name1)Joseph|(?(name2)Jessica|(?(name3)Keith)))
这只是一个简单的例子。
在我的应用程序中,我必须对每个字符串执行大约 20 次替换,这会影响应用程序的性能。
我使用的正则表达式风格是 PCRE。
该应用程序使用 C++ 和 Qt 框架进行编码。