C++语言
文章平均质量分 55
Rosa_zz
这个作者很懒,什么都没留下…
展开
-
Boost序列化
Boost C++ 的序列化库允许将 C++ 应用程序中的对象转换为一个字节序列, 此序列可以被保存,并可在将来恢复对象的时候再次加载。各种不同的数据格式,包括 XML,只要具有一定规则的数据格式,在序列化后都产生一个字节序列。所有 Boost.Serialization 支持的格式,在某些方面来说都是专有的。比如 XML 格式不同用来和不是用 C++ Boost.Serialization 库开发的应用程序交换数据。所有以 XML 格式存储的数据适合于从之前存储的数据上恢复同一个 C++ 对象。转载 2024-07-11 09:00:57 · 48 阅读 · 0 评论 -
Qt笔记:QTextEdit、QEvent和QFile
最常用又最常忘的文件操作:QFile file("categories.txt");if (!file.open(QIODevice::ReadWrite | QIODevice::Text)){QMessageBox::information(NULL,"Error!","Can't open the file!");}QTextStream write(&fi...转载 2020-04-21 15:00:22 · 411 阅读 · 0 评论 -
gcc/g++常见命令汇总
1 2 3 4 intmain() { test(); } man.c如上: 1 2 3 4 5 6 #include <stdio.h> voidtest() { printf("...转载 2020-03-24 11:15:58 · 332 阅读 · 0 评论 -
C++编译错误:undefined reference to “vtable for xxx”;cannot allocate an object of abstract type“xxx”
1.undefined reference to “vtable for ×××”原因分析:通过查看代码发现基类中存在虚函数只有定义没有实现。解决方法:将基类中的虚函数进行实现,或将其定义为纯虚函数。2.cannot allocate an object of abstract type“XXX”原因分析:通过查看代码发现C++程序在创建一个类的对象时报错:Canno...原创 2020-03-16 10:55:43 · 928 阅读 · 0 评论 -
C++二进制文件读写
二进制文件不是以ASCII代码存放数据的,它将内存中数据存储形式不加转换地传送到磁盘文件,因此它又称为内存数据的映像文件。因为文件中的信息不是字符数据,而是字节中的二进制形式的信息,因此它又称为字节文件。对二进制文件的操作也需要先打开文件,用完后要关闭文件。在打开时要用ios::binary指定为以二进制形式传送和存储。二进制文件除了可以作为输入文件或输出文件外,还可以是既能输入又能输出的文件。这...转载 2018-04-10 15:06:32 · 629 阅读 · 0 评论 -
cout格式化输出 C++
由于class ifstream/ofstream分别为class istream/ostream派生来的,所以,下面介绍的cout输出的格式化,在文件的输出时使用方法相同。由于使用iostream工具来设置一些格式值不太方便,为简化工作,C++在头文件iomanip中提供了一些控制符,他们能够提供流成员函数相同的功能。其成员函数与控制符的对应关系如下表格:流成原创 2017-11-21 16:58:37 · 548 阅读 · 0 评论 -
文件打开模式 C++
1. 文件模式常量常量含义ios_base::in打开文件,以便读取ios_base::out打开文件,以便写入ios_base::ate打开文件,并移到文件尾ios_base::app追加到文件尾ios_base::trunc如果文件存在,则截短文件ios_base::binary原创 2017-11-15 12:29:11 · 3524 阅读 · 0 评论 -
for_each使用方法
转载自for_each使用方法详解Introduction學習過STL的container後,想要存取每一個iterator,你一定寫過以下的程式#include vector>#include iostream>using namespace std;int main() { int ia[] = {1, 2, 3}; vectorint> i转载 2017-09-22 16:34:37 · 426 阅读 · 0 评论 -
拷贝构造函数和赋值函数
一、对拷贝构造函数和赋值函数的一些警告:² 如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。以类 String的两个对象 a,b为例,假设 a.m_data的内容为“hello”,b.m_data的内容为“world”。现将 a赋给 b,缺省赋值函数的“位拷贝”意味着执行 b.m_data = a.m原创 2017-09-30 09:06:11 · 373 阅读 · 0 评论 -
构造函数的初始化表
构造函数有个特殊的初始化方式叫“初始化表达式表”(简称初始化表)。初始化表位于函数参数表之后,却在函数体 {} 之前。这说明该表里的初始化工作发生在函数体内的任何代码被执行之前。构造函数初始化表的使用规则:(1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。class A{ A(int x);}class B: public A{ B(in原创 2017-09-29 17:23:49 · 953 阅读 · 0 评论 -
inline函数
一、简述inline关键字放在函数返回类型前,函数实现处必须写inline关键字。关键字inline在函数声明部分可以加也可以不加,建议不加,因为用户不需要知道一个函数是否是内联函数。假如在声明处加了inline,但是在实现处没有加inline,那么此函数被当做普通函数处理。与普通成员函数不同的是,inline成员函数的实现在头文件中,因为内联函数必须在调用该函数的每个文本文件中定转载 2017-09-29 09:02:10 · 361 阅读 · 0 评论 -
引用与指针的比较
一、引用和指针的简要介绍引用是C++中的概念,初学者容易把引用和指针混淆。如下:int m;int &n = m;n相当于m的别名(绰号),对n的任何操作就是对m的操作。引用的一些规则:(1)引用被创建的同时必须被初始化(指针可以在任何时候被初始化);(2)不能有NULL引用,引用必须与合法的存储单元关联(指针可以是NULL);(3)一旦引用被初始化,就不能改变引用的关系原创 2017-09-29 15:25:23 · 299 阅读 · 0 评论 -
函数和链接性
和变量一样,函数也有链接性,虽然可选择的范围比变量小。C++不予许在一个函数中定义另一个函数,因此所有函数的持续性都是静态的,即在整个程序执行期间都一直存在。(1)外部链接性在默认情况下,函数的链接性为外部的,即可以在文件之间共享。(2)内部链接性还可以使用关键字static将函数的链接性设置为内部的,使之只能在一个文件中使用。必须同时在原型和函数定义中都使用static关键字:原创 2017-09-19 09:28:46 · 741 阅读 · 0 评论 -
const变量 C++
在C++中,const限定符对默认存储类型稍有影响的。(1)内部链接性在默认情况下,全局变量的链接性是外部的,但const全局变量的连接形式内部的。也就是说,全局const定义就像使用static说明敷一样。如下:const int finger = 100; // same as static const int finger = 100;int main(){...}内部原创 2017-09-19 08:58:21 · 499 阅读 · 0 评论 -
Linux内存计算
以下程序是计算当前虚拟内存。#include "stdlib.h"#include "stdio.h"#include "string.h"int parseLine(char* line){ // This assumes that a digit will be found and the line ends in " Kb". int i = strlen(lin原创 2017-12-06 15:29:31 · 620 阅读 · 0 评论 -
软件license设计
如何保护软件版权,最常用的办法就是设计一套license验证框架。1、我们的常规需求如下:1.可以限制软件只能在一台机器上使用; 目前很多软件都是一机一码的销售,软件换一台机器则不能使用,想要几台机器使用就得购买几个license;2.可以设置一个使用期限; 试用版软件一般有几十天的免费使用期,销售时也可以分为一年版、终生版等;3.可以设置能使用的权限; ...转载 2019-09-30 09:43:39 · 2286 阅读 · 1 评论 -
C++ list用法
一、List定义:List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件#include<list>二、List定义和初始化:list<int>lst1;//创建空listlist<int> lst2(5);//创建...转载 2019-03-19 11:13:37 · 230 阅读 · 0 评论 -
C++文件读取问题
1. 文件逐行读取逐行读取, 行之间用回车换行符间隔std::ifstream fin(fileName.c_str());if(fin.is_open()){ std::string oneLine = ""; while(getline(fin, oneLine)) { ...... } fin.close();}2...原创 2018-08-17 16:14:27 · 985 阅读 · 0 评论 -
如何避免warning: unused parameter
int function(int p1, int p2){ (void) p1; (void) p2; return 0;}具体讨论:https://stackoverflow.com/questions/15763937/unused-parameter-in-c11原创 2018-06-11 09:17:57 · 9702 阅读 · 0 评论 -
指针函数与函数指针
在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。今天我们从头把它搞清楚 首先它们之间的定义: 1、指针函数是指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。类型标识符 *函数名(参数表)int *f(x,y);首先它是一个函数,只不过这个函数的返回值是一个地址值。函...转载 2018-06-01 10:51:06 · 180 阅读 · 0 评论 -
empty class大小
1、为何空类的大小不是0呢?为了确保两个不同对象的地址不同,必须如此。类的实例化是在内存中分配一块地址,每个实例在内存中都有独一无二的二地址。同样,空类也会实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化后就有独一无二的地址了。所以,空类的sizeof为1,而不是0.2、请看下面的类:class A{ virtual void f(){} };class B:public A{}此时,...转载 2018-05-18 11:03:24 · 243 阅读 · 0 评论 -
C++ 空基类最优化
EBO全称empty base optimization最近看EffectiveC++ 条款39,这个名词让我很陌生,学过之后发现也不是什么新鲜玩意了。1.什么是EBOempty base optimization,空基类最优化,说到什么是EBO,要先从一道面试题说起:class A{};cout <<sizeof(A)<<endl;123sizeof这样一个空类,结果...转载 2018-05-17 15:22:19 · 456 阅读 · 0 评论 -
AES加密算法介绍与实现
AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下各个部分的作用与意义:明文P没有经过加密的数据。密钥K用来加密明文的密码,在对称加密算法中,转载 2018-04-11 14:04:51 · 598 阅读 · 0 评论 -
C++ list用法
1.关于list容器list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;数据...转载 2018-04-08 09:59:24 · 560 阅读 · 0 评论 -
静态持续变量
C++为静态存储持续性提供了3种链接性:外部链接(可在其他文件中访问)、内部链接(只能在当前文件中访问)和无链接(只能在当前函数或代码块中访问)。编译器将分配固定的内存块来存储所有的静态变量,这些静态变量在整个程序执行期间一直存在。如果没有显式的初始化静态变量,编译器将把它设置为0,在默认情况下,静态数组和结构将每个元素或成员的所有位置都设置为0。(1)外部链接:必须在代码块的外部声明它;原创 2017-09-18 16:42:23 · 1284 阅读 · 0 评论 -
struct初始化
结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的。一、若类和结构体所有数据成员均为public型,可采取如下带花括号形式进行初始化。注意:① 不论值的个数多少,都必须使用花括号定界② 未指定值的数据成员编译器会自动初始化为默认值③ 这种初始化对象方式,要求所有数转载 2017-09-25 17:00:22 · 635 阅读 · 0 评论 -
const成员函数
在类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说这些函数是“只读”函数,而有一些函数要修改类的数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,不仅可以提高程序的可读性,还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员,编译器就会报错。形式: int getX() const;注意:(1)const对象的数据成员在对象寿命原创 2017-09-15 16:51:03 · 233 阅读 · 0 评论 -
素数
最近需要个序列,要求接近2的幂,但又不能有公因子。为免除后患,决定取大于2^N的最小质数。希望至少找到2^33次方,选用了筛法。由于需要8G以上内存,程序编译模式得选x64:(BTW:编写时发现VC++的new操作不能分配超过0x7FFFFFFF的内存,而malloc可以)[cpp] view plain copy// pri转载 2016-12-23 10:40:30 · 360 阅读 · 0 评论 -
list C++
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.#includeassign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭原创 2017-04-14 08:35:41 · 300 阅读 · 0 评论 -
C++ 文件读写
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view plain copy print?#include ofstream //文转载 2017-04-17 12:51:08 · 667 阅读 · 0 评论 -
C++ set用法
#include set 集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来原创 2017-07-06 10:23:07 · 259 阅读 · 0 评论 -
C 中的malloc/free 与C++中new/delete的区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.转载 2017-07-27 08:52:05 · 448 阅读 · 0 评论 -
c++ string的用法
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的str转载 2017-08-02 17:54:35 · 265 阅读 · 0 评论 -
C++可变参数函数
可变参数的函数,即参数个数可变、参数类型不定的函数。设计一个参数个数可变、参数类型不定的函数是可能的,最常见的例子是printf函数、scanf函数和高级语言的Format函数。在C/C++中,为了通知编译器函数的参数个数和类型可变(即是不定的、未知的),就必须以三个点结束该函数的声明//printf函数的声明 int printf(const char * _Forma翻译 2017-08-04 13:09:00 · 883 阅读 · 0 评论 -
C++11可变模板参数
1概述C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧,所以它也是C++11中最难理解和掌握的特性之一。虽然掌握可变模版转载 2017-08-10 09:10:29 · 865 阅读 · 0 评论 -
静态static 在C++中的应用
转载自:C++中的static关键字C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:转载 2017-09-06 15:04:31 · 280 阅读 · 0 评论 -
vector C++ copy方法
转载自:C++ vector拷贝使用说明主要有以下几种方法[cpp] view plain copyvectorint> list; list.push_back(1); list.push_back(2); 一、初始化构造时拷贝[cpp] view plain copy转载 2017-09-08 12:00:43 · 3105 阅读 · 0 评论 -
time应用 C++
转载自:C++ time一、三个概念:(1)UTC/GMT:Coorainated Universal Time:它是一个标准,最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时,也即格林威治标准时间(Greenwich Mean Time,GMT),在大多数场合,UTC与GMT等同(只是GMT不再由科学界精确定义)。注:为描述方便,本文中将UTC与转载 2017-09-11 14:54:00 · 309 阅读 · 0 评论 -
c++ 时间函数使用
通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国转载 2016-12-22 09:11:55 · 316 阅读 · 0 评论 -
string compare用法
string (1)int compare (const string& str) const;substrings (2)int compare (size_t pos, size_t len, const string& str) const;int compare (size_t pos, size_t len, const string& str, s原创 2016-12-20 12:31:02 · 1885 阅读 · 1 评论