我很乐意继续学习C/C++中指针的精细笔记以及它们是如何工作的,但经过一些研究后,我对下面的代码感到不舒服.
std::shared_ptr<CDKSCREEN> cdkScreen;
cdkScreen = std::make_shared<CDKSCREEN>(*initCDKScreen(newWin.get()));
Run Code Online (Sandbox Code Playgroud)
内部原始指针的使用是否std::shared_ptr会使您使用智能指针获得的任何好处无效?或者两种方式都一样吗?谢谢你,我感谢这篇文章的任何答案.
编辑:我没有意识到该reset()功能的全部目的,但感谢所有向我指出这一点的人.看来我也可以传递自定义析构函数std::shared_ptr,如下所示:
std::shared_ptr<CDKSCREEN> cdkScreen(initCDKScreen(newWin.get()), destroyCDKScreen);
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我有一个RegEx,[^/\&\?] +.\ w {3,4}(?=([\?&].*$ | $)),但我无法得到它使用下面[1]中的功能.
[1] - http://doc.qt.io/qt-5/qregexp.html
这是我试过的代码:
QRegExp rx("[^/\\\\&\\?]+\\.\\w{3,4}(?=([\\?&].*$|$))", Qt::CaseInsensitive, QRegExp::RegExp);
std::ostringstream list;
int pos = 0;
while ((pos = rx.indexIn(url, pos)) != -1) {
list << rx.cap(1).toStdString();
pos += rx.matchedLength();
}
return list;
Run Code Online (Sandbox Code Playgroud)
它应该从URL中提取文件名,但只返回任何内容.我不确定出了什么问题.有人可以提供帮助吗?先感谢您.