
C++
文章平均质量分 61
shmiloveyou
热爱C/C++、Rust
展开
-
【C++】redis client: redis_plus_plus
C++ redis client demo原创 2022-03-05 19:03:13 · 3341 阅读 · 0 评论 -
【C++】类的拷贝赋值函数
C++类的拷贝赋值函数使用及注意事项转载 2022-02-27 16:20:24 · 3620 阅读 · 2 评论 -
【C++】Big Five: 构造函数、拷贝构造函数、拷贝赋值函数、移动构造函数、析构函数
C++类的成员变量是否含有“指针类型”直接决定了“Big Five”函数的编写!有无指针类型”成员变量造成Big Five函数实现完全不一样,因此我们需要分别讨论这两种情形。原创 2022-02-27 16:23:35 · 1369 阅读 · 0 评论 -
【C++】使用容器管理对象注意事项
将局部对象变量放入容器中进行管理需要特别小心(存在重复析构成员变量为指针类型的属性),直接上代码看:#include <vector>#include <string>#include <iostream>using namespace std;class Person {public: Person(string name) : pName_(new string(name)) {} // Person(const Person& pers原创 2021-08-15 18:42:26 · 411 阅读 · 0 评论 -
【C++20】三路比较运算符“<=>” : Three-way comparison operator <=>
语法介绍C++20 编译器支持进展GCC11编译g++11教程本文中所有代码使用GCC11.1版本g++(几乎完全支持C++20)进行编译,当后续版本GCC完全支持C++20后再更新。测试代码:#include <compare>#include <iostream>int main(){ double foo = -0.0; double bar = 0.0; auto res = foo <=> bar; if.原创 2021-06-24 09:39:52 · 604 阅读 · 0 评论 -
【C++20】文本格式化: text formatting
提案文档std::format函数详解测试代码:// main.cpp#include <format>#include <iostream>#include <string>#include <string_view> template <typename... Args>std::string dyna_print(std::string_view rt_fmt_str, Args&&... args) .原创 2021-06-23 22:49:23 · 940 阅读 · 2 评论 -
【C++20】module特性测试
GCC11.1 编译测试modules特性代码:cxxabi_init_exception.h:52:9: 错误:cannot declare ‘struct std::type_info’ in a different module原创 2021-06-01 11:42:55 · 1149 阅读 · 1 评论 -
【C++20】GCC11构建方法
#镜像http://www.gnu.org/prep/ftp.htmlGNU镜像列表https://mirrors.ustc.edu.cn/gnu/(国内)清华大学GNU镜像#下载#下载地址#gcc 10.1路径1(推荐):https://mirrors.ustc.edu.cn/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.gz路径2:https://ftp.gnu.org/gnu/gcc/gcc-10.1.0/gcc-10.1.0.ta...原创 2021-06-01 11:27:45 · 3677 阅读 · 0 评论 -
【C++20】协程(Coroutine)体验
使用GCC10.1的g++编译器。GCC10.1构建方法参看【C++20】GCC10.1构建经验$ g++10 -o out co_vs_callback.cpp -fcoroutines -lpthread/* * co_vs_callback.cpp * * Created on: Mar 13, 2019 * Author: frank */#include <iostream>#include <thread>//#include <原创 2021-02-18 15:25:47 · 984 阅读 · 1 评论 -
【C++】rapidjson: 读取复杂的json串
Rapidjson简介:C++11模板库方式实现的json解析库Rapidjson文档:http://rapidjson.org/zh-cn/index.html以如下json为例,使用rapidjson解析{ "data": { "security_token": "CAIS+QJ1q6Ft5B2yfSj...Hvo2LHm", "access_key_id": "STS.NTAgDURZo3op8zMRrfYvPG6yF", "access_key_secr.原创 2020-09-03 14:30:20 · 3330 阅读 · 0 评论 -
【OpenSSL】MD5:计算字符串和文件的哈希值
说明测试平台系统:Ubuntu18.04 X86_64测试语言:C++11测试编译器:GCCversion 7.5.0测试内容:字符串和文件的MD5哈希值计算方法一、MD5简介关于16位和32位MD5值: MD5得到的是一个16字节的哈希值(或称散列值),每个字节格式化位16进制(0x**),取数值部分的两个字符,连起来得到一个32个字符的字符串。这就是所说的32位MD5值。16位MD5值就是取的32位MD5值的中间段,即第9至24位(如果从0开始作为第一位,则是第8至23位...原创 2020-09-03 11:19:36 · 4566 阅读 · 0 评论 -
【C++20】第三方协程库测试
协程库:https://godbolt.org/z/icfqLr说明: 以下代码在Ubuntu18.04 + GCC10上编译,GCC10构建方法参看【C++20】GCC10.1构建经验coroutines.hpp#ifndef COROUTINE_HPP#define COROUTINE_HPP#if __has_include(<coroutine>)#include <coroutine>#else#include <experimental/c原创 2020-08-31 18:33:30 · 897 阅读 · 0 评论 -
【C++20】GCC10.1构建经验
#镜像http://www.gnu.org/prep/ftp.html GNU镜像列表https://mirrors.ustc.edu.cn/gnu/ (国内)清华大学镜像#下载#下载地址#gcc 10.1路径1(推荐):https://mirrors.ustc.edu.cn/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.gz路径2:https://ftp.gnu.org/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar....原创 2020-06-19 15:50:52 · 2087 阅读 · 5 评论 -
数组引用语法表达
数组引用语法表达#include "iostream"using namespace std;template int fref(const T (& pa)[N] , const T (& pb)[K] ){ return0;}int main(void){ int a[10],b[42]; fref(a, b); //数组引用 re原创 2013-06-01 09:46:22 · 812 阅读 · 0 评论 -
warning C4715: 'compare' : not all control pathsreturn a value
template int compare( const T& strA, constL& strB ){ stringstr_A(strA), str_B(strB); //用C风格的数组构造string对象 try { if( str_A > str_B ) return 1; else if ( str_A原创 2013-06-01 09:46:18 · 4845 阅读 · 0 评论 -
C++ string构造函数详解
1.string();2.string( const string& s );3.string( size_type length, constchar& ch );4.string( const char* str );5.string( const char* str, size_type length);6.string( const string& str,size_t原创 2013-06-01 09:46:09 · 1264 阅读 · 0 评论 -
VC6.0支持C++不足处之一
上代码:#include <iostream>#include <iterator>#include <algorithm>#include <string>#include <vector>#include <fstream>using namespace std;int main( void ){...原创 2013-06-01 09:45:45 · 1676 阅读 · 0 评论 -
借用template和vector模拟Stack
模拟代码:#include #include #include using namespace std;template class Stack{private: vector elems;public: void push( T const & element ); void pop( ); T top() const; bool empty()con原创 2013-06-01 21:10:18 · 856 阅读 · 0 评论 -
C++动态生成对象的使用
#includeusing namespace std;class GamePlayer{public: static constint NUM_TURNS = 5; //比较老的编译器不支持这种写法 intscores[NUM_TURNS];};//const int GamePlayer::NUM_TURNS = 10;int main( void原创 2013-06-01 09:45:33 · 752 阅读 · 0 评论 -
C++函数中string类型的形参声明方…
注意即使添加了#include 在写函数原型时写成这样也会报错:string output( string str ){ retrun str;}使用方法如下:#include string output( std::string str){ returnstr;}红色标记申明才能正确使用。原创 2013-06-01 09:45:49 · 3551 阅读 · 0 评论 -
C++程序内存分配中set_new_handler…
当运算符new找不到足够大的连续内存块来为对象分配内存时将会发生内存不足的异常,当然用try( )catch{ }可以捕获并处理这个异常。但是它用起来比较麻烦,另一个比较的方法是使用如下方法:---------------------------------摘自EffectiveC++---------------------------------------- 这个方法基于一个原创 2013-06-01 09:46:01 · 1924 阅读 · 0 评论 -
C++ typename关键字的作用
参考:http://blog.163.com/cp7618@yeah/blog/static/70234777201122111034365/原文详细讲解typedef和typename的作用与区别 引用讲解typename作用部分:2、类型解释TypenameTypename关键字告诉了编译器把一个特殊的名字解释成一个类型,在下列情况下必须对一个name使用typename关键字原创 2013-06-01 09:46:31 · 1842 阅读 · 0 评论 -
C++ string class
string::compare C++字符串支持常见的比较操作符(>,>=,),甚至支持string与C-string的比较(如str”test”)。在使用>,>=,这些操作符的时候是根据“当前字符特性”将字符按字典顺序进行逐一得比较。字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。同时,string(“a原创 2013-06-01 09:46:16 · 1104 阅读 · 0 评论 -
C++ for_each函数\for_each模板
for_each()函数void for_each( int (&int_ref)[10] ){ for( inti=0; i cout}int main( int argc, char* argv[] ){ intint_array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for_原创 2013-06-01 09:46:24 · 1614 阅读 · 0 评论 -
for_each的各种情况下的使用详解
for_each在各种情况下的使用详解翻译 2013-09-11 17:27:18 · 2466 阅读 · 0 评论 -
为什么C++编译器不能支持对模板的分离式编译--error LNK2019: 无法解析的外部符号
为什么C++编译器不能支持对模板的分离式编译(error LNK2019: 无法解析的外部符号)首先,C++标准中提到,一个编译单元[translation unit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp 文件为一个.obj文件,后者拥有PE[Portable Executable,即wi转载 2013-10-20 12:13:10 · 1307 阅读 · 0 评论 -
非常对象访问常成员函数,导致内部this指针无法访问非常成员函数
非常对象访问常成员函数,导致内部this指针无法访问非常成员函数,引发如下异常:rror C2662: “LinkedList::showElement”: 不能将“this”指针从“const LinkedList”转换为“LinkedList &” 实例如下:class LinkedList{private:public: void showElem原创 2013-10-20 16:08:37 · 2545 阅读 · 0 评论 -
类模板&结构体模板的new运算
类模板和结构体模板是如何进行带类型信息参数/用模板参数进行new运算结构体模板:templateclass Node{public: Node *next; //指向后继结点的指针 T data; //数据域 Node(); Node(const T &data, Node *next = 0); //构造函数 ~Node(); //析构函数};t原创 2013-10-20 22:45:11 · 5977 阅读 · 0 评论 -
试过将main() 和 WinMain()函数放在.h文件中码?
程序入口函数(main或WinMain)放置在.h文件中,你试过吗?原创 2013-10-22 16:14:32 · 2595 阅读 · 5 评论 -
隐藏main()函数,使用一个全局对象的成员函数替代main()函数的功能
在代码中隐藏main()函数,采用一个全局对象的成员函数替代main()函数的功能。实现使用了C++语言。原创 2014-02-26 21:27:09 · 2274 阅读 · 0 评论 -
C/C++的几种链接属性浅析
㈠. external和internal以及none链接属性的讲解㈡.变量 定义和声明 的区分原创 2014-04-07 13:24:15 · 2037 阅读 · 0 评论 -
Boost的Serialization和SmartPoint搭配使用
为什么智能指针指向构造函数实例化的对象,在内存释放时出现“Expression:_BLOCK_TYPE_IS_VALID (pHead->nBlockUse)错误”,但是改为指向用new运算符生成的对象,在内存释放时就没有此类问题?请高手帮忙解决下,谢谢翻译 2013-11-17 18:24:06 · 1332 阅读 · 0 评论 -
畅游C++ Boost Serialization 序列化
畅游C++ Boost Serialization 序列化。使用案例详细了解Boost::Serialization存储C++对象。原创 2015-05-10 17:27:39 · 7891 阅读 · 0 评论 -
C++对象模型 学习笔记01
C++对象模型学习笔记01——拷贝构造函数原创 2017-04-12 22:34:02 · 479 阅读 · 0 评论 -
【C++】VS2013:转义字符引发“warning treated as error - no 'object' file generated”
QRegExp rx("(.*)\.(.*)\?");提示:warning treated as error - no 'object' file generated开始感觉莫名其妙,百思不得其解。后来问同事,告知是因为VS2013的VC++编译器认为“\?”是非法的转移结构,所以报上述错误 那就换成双斜线转义:QRegExp rx("(.*)\\.(.*)\\?");...原创 2018-08-28 17:41:46 · 596 阅读 · 0 评论 -
【C++】EASTL: 抛弃C++ STL的开源STL
EASTL -- Electronic Arts Standard Template Libraryhttp://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2271.htmlDocument number: N2271=07-0131 Date: 2007-04-27 Reply to: Paul Ped...转载 2019-04-10 11:31:06 · 4388 阅读 · 0 评论 -
【C++】OpenSSL发布策略/版本说明
https://www.openssl.org/policies/releasestrat.html(英文原版见后半部分)发布战略(谷歌翻译)首次发布于2014年12月23日最后修改于2019年2月25日从3.0.0版开始,OpenSSL版本控制方案正在转变为更现代的格式:MAJOR.MINOR.PATCH使用此格式,将保证相同MAJOR版本号的API / ABI兼容性。以前...转载 2019-06-25 10:56:54 · 1410 阅读 · 0 评论 -
【C++】libcurl:学习
https://github.com/jpbarrette/curlpp cURL的一个C++封装https://github.com/jpbarrette/curlpp/blob/master/doc/guide.pdfhttps://blog.youkuaiyun.com/chary8088/article/details/6890596 全面详细介绍libcurl的使用https://...原创 2019-06-25 11:31:19 · 938 阅读 · 0 评论 -
【C/C++】zlib库编译
zlib编译:zlibhttp://zlib.net/下载1.2.7以外的版本,比如1.2.11。 我的解压后的路径:F:\Study\C++\zlib\zlib-1.2.11zlib-1.2.11\contrib\vstudio\vc14\zlibvc.sln,编译release版本。 在生成的zlib-1.2.11\contrib\vstudio\vc14\x86\目录下 我...原创 2019-06-25 16:44:22 · 2353 阅读 · 0 评论 -
【C++】开源C/C++网络库
https://www.cnblogs.com/findumars/p/5859634.html(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html(2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开...转载 2019-06-22 19:46:37 · 635 阅读 · 0 评论