- 博客(19)
- 收藏
- 关注
原创 c++20 formatting(fmt)使用方法
Format是一个编程语言非常重要的一环,c++的iomanip里的各种骚操作,在长字符串使用中是一个灾难。因此在c++20中提出了新库formatting,用类似于python的语法实现了fromat。但是目前实际项目中最多到c++17,有的项目甚至在用c++11。还好,fmt库就是formatting。fmt实现了几乎所有C++20的formatting 库,只有非常细微的差别。
2023-02-02 19:09:55
4688
原创 StarUML 插件的离线
最近需要离线使用StarUML(3.0.1),主要是插件不太好安装。如下:没有离线安装的位置,点击Issues可以到github下,尝试Install from Url...,换成本地路径无果。后来发现在下面的目录发现了源码,C:\Users\XXX\AppData\Roaming\StarUML\extensions\user 只要在github上下载源码,解压到该目录,...
2018-07-28 22:05:00
3344
原创 Qt 抛出异常的容器
QList的at当超出范围时,不抛出异常,而是程序直接崩溃。是因为QList的at函数如下template inline const T &QList::at(int i) const{ Q_ASSERT_X(i >= 0 && i ::at", "index out of range"); return reinterpret_cast(p.at(i))->t(); }Q_ASSERT
2018-01-27 20:34:10
9553
4
原创 singleton
最近碰到一个同事讨论全局访问的对象,想起来这个模式,比起这个模式更有意思的是这个模式各种实现中学习到的c++知识。记录下我曾经学习到的单件模式,和曾经实现的版本。我给他提供的实现是meyer版本:templateclass Singleton{public: static Type& GetInstance() { static Type valu
2018-01-09 22:16:22
272
原创 recompile with -fPIC
ubuntu 16.04上封装boost库(需要编译的库)为动态库的时候,碰到类似错误:relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC开始以为是给动态库添加-fPIC,后来发现是给boost添加,在编译b
2018-01-09 22:10:15
3252
翻译 c++ concurrency in action中的 SpinLockMutex
如下:class spinlock_mutex{ std::atomic_flag flag;public: spinlock_mutex() : flag(ATOMIC_FLAG_INIT) { } void lock() { while (flag.test_and_set(std::memory_order_acquire)); } void unlock...
2017-12-19 21:34:40
222
原创 QQmlParserStatus
最近项目用到QQmlParserStatus,这个类型提供当被QQmlEngine创建时,在创建的不同时机给予通知。class Q_QML_EXPORT QQmlParserStatus{public: QQmlParserStatus(); virtual ~QQmlParserStatus(); virtual void classBegin()=0; v
2017-11-19 07:45:45
950
原创 qtquick 与c++交互总结
交互方式分为四种,qml访问C++,C++调用qml,model/delegate/view机制,使用序列化字符串json:qml访问C++qml不能直接访问c++的类型,C++类型必须注册到元对象系统才能被qml访问。qml可以访问属性、信号、槽、枚举定义(Q_ENUM)、函数(Q_INVOKABLE)。下面以Student类为例,演示上面的各个类型,第一种方式,注册类型,第一步
2017-11-04 15:11:03
2923
原创 tinyxml2源码分析-4
接下来分析写文件,这个简单,使用visitor设计模式来实现,visitor接口如下,注意Element的visit接口,传入了XMLAttribute指针 来遍历Attributeclass XMLVisitor{public: virtual ~XMLVisitor() {} /// Visit a document. virtual bool VisitEn
2016-09-28 21:02:43
770
1
原创 tinyxml2源码分析-3
有了所有的子节点,可以开始编写LoadFile的代码了,XMLError是个枚举类型,一般而言,先定义一个枚举,同时定义XML_SUCCESS=0,因为成功不需要理由,失败者总是需要借口。等到编码到后期再添加错误码。XMLError XMLDocument::LoadFile( const char* filename ){ Clear(); FILE* fp = cal
2016-09-26 21:50:05
1000
原创 tinyxml2源码分析-2
我们实现了XMLNode,接下来我们实现XMLTextclass XMLText : public XMLNode{ friend class XMLDocument;public: virtual XMLText* ToText(){ return this; } virtual const XMLText* ToText() const{ return this;
2016-09-25 20:04:53
1117
2
原创 tinyxml2源码分析-1
换一种方式来对源码分析,从零开始“写”一个tinyxml2。提前郑重声明,本博客所有大tinyxml代码都直接copy自tinyxml源码。在开始分析源码前,如下图所示,是tinyxml2的各个主要类型,XMLAttribute其实是一个单向链表,放在后面实现。tinyxml2把xml文档建立成一棵DOM树,具体实现用的是firstchild–nextsiblingtree,如
2016-09-25 17:10:03
1136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人