![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础知识
闰土少年与猹
这个作者很懒,什么都没留下…
展开
-
结构体作为map的键值
这里首先给出容器map的原型: 1 2 3 4 5 6 7 8 template< classKey, classT, classCompare = less<Key>, classAlloc = alloc> classmap{ ... } 可以看到模板参数一共有四个,第...原创 2020-06-25 14:03:16 · 1038 阅读 · 0 评论 -
正则表达式使用
boost:问题的提出:Boost.Regex作为Boost对正则表达式的实践,是C++开发中常用模式匹配工具。但在这次使用过程中发现,它他对中文的支持并不好。当我们指定/w匹配时,包含“数”或“节”等字的字符串就会出现匹配失败的问题。解决方案:思路:把字符都转换成宽字符,然后再匹配。需要用到以下和宽字符有关的类:1、wstring:作为STL中和string相对应的类,...原创 2020-04-15 15:51:32 · 503 阅读 · 0 评论 -
char * 与 char[]
char*p,表示p是指向字符串的指针char arr[],表示arr是一个字符串数组通过下面的例子来看char*与char[]的区别:1)char s[5]; s = "abcd"; //错误2)char *s; s = "abcd"; //正确1编译不通过但是2编译通过。这是因为在1中,s是数组名,当成是常量指针,不可以作为左值修改;而2中s是一个指针变...转载 2019-03-19 11:16:11 · 316 阅读 · 0 评论 -
const的用法
https://www.cnblogs.com/azbane/p/7266747.htmlconst的用法,特别是用在函数前面与后面的区别!const的用法,特别是用在函数后面在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。在 const成员函数中,this的类型是一个指向 cons...转载 2019-03-19 11:17:30 · 296 阅读 · 0 评论 -
C++ 预编译头文件
C++ 预编译头文件1、解决什么问题? C++ 编译器是单独,分别编译的,每个cpp文件,进行预编译(也就是对#include,define 等进行文本替换),生成编译单元。编译单元是一个自包含文件,C++编译器对编译单元进行编译。考虑,头文件A.h被多个cpp文件(比如A1.cpp,A2.cpp)包含,每个cpp文件都要进行单独编译,其中的A.h部分就会被多次重复第编译,影响效率。...转载 2019-03-22 18:00:20 · 156 阅读 · 0 评论 -
程序调用 动态库与静态库 访问路径
静态库链接时搜索路径顺序:1. ld会去找GCC命令中的参数-L2. 再找gcc的环境变量LIBRARY_PATH3. 再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的动态链接时、执行时搜索路径顺序:1. 编译目标代码时指定的动态库搜索路径2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径3.配置文件...转载 2019-03-27 15:28:03 · 189 阅读 · 0 评论 -
运行时类型识别(Run-time type identification , RTTI)
参考:https://www.cnblogs.com/gaohongchen01/p/4085908.html http://www.cppblog.com/smagle/archive/2010/05/14/115286.html 运行时类型识别(Run-time type identification , RTTI),是指在只有一个指向基类的指针或引用时,确定所指对...翻译 2019-03-27 15:50:51 · 474 阅读 · 0 评论 -
C 字符数组与字符串的使用及加结束符'\0'的问题
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符...转载 2019-03-27 20:31:06 · 614 阅读 · 0 评论 -
慎用sscanf、swscanf
常見錯誤用法:bytearg;swscanf(_T("100"),_T("%d"), &arg);INT8arg;swscanf(_T("100"),_T("%d"), &arg);INT16arg;swscanf(_T("100"),_T("%d"), &arg);以上三種用法會出現內存越界,從而可能導致程序崩潰,請看下面一段測試代碼:by...转载 2019-03-27 20:48:15 · 306 阅读 · 0 评论 -
数字 与 字符串 相互转换
整型值 >>>> 字符串sprintf (跨平台)char buffer[20]int n = 123456;sprintf(buffer,"%d",n);itoa()函数itoa()原型: char *itoa( int value, char *string,int radix);原型说明:输入参数:v...转载 2019-03-28 09:25:28 · 151 阅读 · 0 评论 -
C/C++基本数据类型所占字节数
参考:http://blog.csdn.net/vast_sea/article/details/8076934关于这个基本的问题,很早以前就很清楚了,C标准中并没有具体给出规定那个基本类型应该是多少字节数,而且这个也与机器、OS、编译器有关,比如同样是在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节。所以int,longint,s...转载 2019-03-28 11:14:24 · 385 阅读 · 0 评论 -
linux和windows下,C/C++的sleep函数
简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 在VC中使用带上头文件 #include <windows.h> 在gcc编译器中,使用的头文件因gcc版本的不同而不同linux系统需要添加的头文件 #include <...转载 2019-03-28 11:24:39 · 332 阅读 · 0 评论 -
C++ protected(受保护的)详解
保护成员的可访问范围比私有成员大,比公有成员小。能访问私有成员的地方都能访问保护成员。保护成员扩大的访问范围表现在:基类的保护成员可以在派生类的成员函数中被访问。引入保护成员的理由是:基类的成员本来就是派生类的成员,因此对于那些出于隐藏的目的不宜设为公有,但又确实需要在派生类的成员函数中经常访问的基类成员,将它们设置为保护成员,既能起到隐藏的目的,又避免了派生类成员函数要访问它们时只能间接访问...转载 2019-03-28 16:18:13 · 1654 阅读 · 0 评论 -
友元(友元函数、友元类和友元成员函数) C++
友元(友元函数、友元类和友元成员函数) C++有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的。例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。 友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以friend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方...转载 2019-03-28 16:33:08 · 317 阅读 · 0 评论 -
值传递 指针传递 引用传递 二级指针 指针的引用
深入理解c++指针的指针和指针的引用: https://m.jb51.net/article/86511.htm传指针和传指针引用的区别/指针和引用的区别(本质)https://www.cnblogs.com/x_wukong/p/5712345.html值传递、指针传递、引用传递https://www.cnblogs.com/happying30/p/94848...转载 2019-03-22 12:49:30 · 146 阅读 · 0 评论 -
指针
指针的值----或者叫指针所指向的内存区或地址指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32 位程序里,所有类型的指针的值都是一个32 位整数,因为32 位程序里内存地址全都是32 位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了...转载 2019-03-22 12:46:36 · 432 阅读 · 0 评论 -
Windows中的时间(SYSTEMTIME和FILETIME)
上一篇中介绍了C运行库中的时间处理函数。这一篇介绍Windows SDk中提供的时间函数。两种时间系统之间没有本质区别(事实上CRT时间是用Windows时间实现的,当然这是说的VC实现),同样提供本地时间和UTC时间之间的转换。不过CRT中的tm时间在SDK中对应为系统时间(SYSTEMTIME),CRT中的time_t时间在SDK中对应的为文件时间(FILETIME),那个"特殊时刻"也变成...转载 2019-03-22 09:37:32 · 220 阅读 · 0 评论 -
stl map容器中指针的释放
struct MyStruct{int i;char c;MyStruct(int i, char c){this->i = i;this->c = c;}};int stl_ptr_test(){MyStruct* pst1 = new MyStruct(1, 'a');...转载 2019-03-20 10:14:49 · 1152 阅读 · 0 评论 -
C++构造函数初始化列表与构造函数中的赋值的区别
C++类中成员变量的初始化有两种方式:构造函数初始化列表和构造函数体内赋值。一、内部数据类型(char,int……指针等) class Animal { public: Animal(int weight,int height)://A初始化列表 m_weight(weight), m_height(height) { ...转载 2019-03-20 10:30:16 · 306 阅读 · 0 评论 -
C++类中的静态成员变量和静态成员函数的作用
数据成员可以分为静态变量、非静态变量两种。静态成员:静态类中的成员加入static 修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态成员,因为静态成员存在于内存,所以非静态成员可以直接访问类中的静态成员。 非静态成员:所以没有加static的成员都是非静态成员,当类被实例化后,可以通过实例化的类...转载 2019-03-20 10:58:59 · 356 阅读 · 0 评论 -
C++的六个默认函数
C++有六个默认函数:分别是1、default构造函数;2、默认拷贝构造函数;3、默认析构函数;4、赋值运算符;5、取值运算符;6、取值运算符const;// 这两个类的效果相同class Person{}class Person{public: Person() {...} // deafault构造函数; Person(con...转载 2019-03-20 14:42:59 · 511 阅读 · 0 评论 -
wstring操作与普通段字符操作对照表
字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() iscntrl() 测试字符是否是控制符 iswdigit() isdigit() 测试字符是否为数字 iswgraph() isgraph...转载 2019-03-20 16:11:34 · 383 阅读 · 0 评论 -
容器的比较
1)vector内部数据结构:数组。在末尾增加或者删除元素所需时间与元素数目无关,在中间或者开头增加或者删除元素所需时间是随元素数目呈线性变化。2):deque内部数据结构是:数组随机访问每个元素,所需要的时间为常量。在开头和末尾增加元素所需时间与元素数目无关,在中间增加或删除所需时间随元素数目呈线性变化。3)list内部数据结构:双向环状链表不能随机访问一个元素,...转载 2019-03-20 16:43:47 · 116 阅读 · 0 评论 -
C++ 二级指针的使用
指针作为函数参数传递函数参数传递的只能是数值,所以当指针作为函数参数传递时,传递的是指针的值,而不是地址。#include "stdio.h"void pointer(int *p){ int a = 11; printf("\n\nEnter function"); printf("\nthe p is point to %p , addr is %X, *p i...转载 2019-03-20 17:34:57 · 403 阅读 · 0 评论 -
sizeof用法总结
sizeof用法总结 以下运行环境都是一般的,在32位编译环境中 1,基本数据类型的sizeof cout<<sizeof(char)<<endl;结果是1 cout<<sizeof(int)<<endl; 结果是4 c...转载 2019-03-20 17:40:16 · 182 阅读 · 0 评论 -
数组指针和数组引用做参数的区别
template<class T>void func1(T &, T &){}template<class TT>void func2(TT, TT){}int main(){ int a[10], b[10], c[20]; func1(a, b); //OK, 数组引用 func1(b, c); //ERRO...转载 2019-03-20 17:41:15 · 614 阅读 · 0 评论 -
字符串数组与字符串指针
字符串数组与字符串指针的区别 C中没有字符串数据类型,一般使用数组对字符串进行各种操作。(1)字符串指针 字符串指针是定义了一个指针变量,指针变量存储的是某个字符串的内存首地址。他是指针变量被放在内存中的栈区。在编译器编译时,会自动在字符串结尾处添加结束标识符'\0'。(2)字符串数组 字符串数组是用数组来存储字符串。字符串数组作为变量存储在内存中的栈区。C对于字符数组没...转载 2019-03-21 15:24:44 · 231 阅读 · 0 评论 -
各种类型变量初始化
// 有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括: 1 2 3 4 5 // a. 常量型成员变量 如:const int i; // b. 引用型成员变量 如:int &i; // c. 静态成员变量...转载 2019-03-21 15:24:27 · 209 阅读 · 0 评论 -
char* char[]
C++判断char*的指向char *a = "Peter";char b[] = "Peter";char *c = new char[6];strcpy_s(c, 6, "Peter");这里a指向常量区b指向栈区c指向堆区//main.cppint a=0; //全局初始化区char *p1; //全局未初始化区main(){ in...转载 2019-03-21 15:24:14 · 7701 阅读 · 0 评论 -
C++Union的用法
联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出!1、什么是联合?“联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所...转载 2019-03-21 15:23:34 · 234 阅读 · 0 评论 -
C/C++中static的用法全局变量与局部变量
1.什么是static? static是C/C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。1.1static的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题:如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定义...转载 2019-03-19 16:51:51 · 509 阅读 · 0 评论