C++/C
文章平均质量分 50
lycx12
这个作者很懒,什么都没留下…
展开
-
C语言strstr()函数用法-字符串查找
strstr()函数是一个参数为两个字符指针类型,返回值是char*类型的函数。用于找到子串(str2)在一个字符串(str1)中第一次出现的位置(不包括str2的串结束符),并返回该位置的指针,如果找不到,返回空指针(NULL)。这里因为传进来的地址指向的内容不会在发生改变,所以我们在两个形参(char*)前加上const。它包含在string.h头文件中。原创 2023-01-04 18:47:50 · 21928 阅读 · 0 评论 -
memcpy与memmove函数的区别和实现
memcpy与memmove都是C语言的库函数,在头文件string.h中,作用是内存拷贝。唯一的区别是,当内存发生局部重叠时,memmove保证了拷贝的结果是正确的,但是memcopy不一定是正确的。但是memcpy比memmove速度快。destination即目标空间,即要复制到哪个空间source即源空间,即要被复制的内存空间num即要复制多少个字节的内容到destinationvoid*即返回目标空间。原创 2023-01-02 18:14:55 · 1542 阅读 · 0 评论 -
C++ string详解,C++字符串详解
string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和c语言的字符串之间有着良好的接口。使用 string 类需要包含头文件2.定义 string 变量string s1;//获取字符串长度return 0;}变量 s1 只是定义但没有初始化,编译器会将默认值赋给 s1,默认值是"",也即空字符串。原创 2023-01-02 12:41:10 · 3061 阅读 · 0 评论 -
C语言中printf的内容带有多个引号
{"HOST": "fes1", "TIME": "2022-10-12 15:50:01", "ALARM": "file故障"}输出这个内容时需要用到转义字符'\" ',增加了转义字符后,双引号就能正常输出了。\t 水平制表符。\" 插入双引号。\' 插入单引号。\\ 插入反斜杠。\v 垂直制表符。原创 2022-10-12 16:38:26 · 3228 阅读 · 0 评论 -
sizeof的使用与内存对齐
1.sizeof是一个单目运算符,不是一个函数。sizeof运算符是获取其操作数所占内存空间的字节数,sizeof的操作数可以是类型名,也可以是表达式。int a = 1; double b = 1.5; sizeof(int);//结果为4 sizeof(a);//结果为4 sizeof(a+b);//结果为8获取double 类型数组darray的元素个数:int count = sizeof(darray) /sizeof(double);计算字符串长度应该使用strlen函数原创 2022-01-01 22:05:20 · 906 阅读 · 0 评论 -
栈空间和堆空间的区别
在程序中,数据存储在不同的区段,通常将整个数据区分为四部分:栈存储区,堆存储区,全局及静态存储区,常量存储区。1.栈空间主要存储函数参数和局部变量。存储数据是先进后出,由编译器负责分配和释放回收。2.堆存储区主要存储动态分配的内存块,编译器不会自动处理,需要程序员负责分配和回收。有可能产生内存泄漏,在不断分配和释放空间的过程中,造成空间逐渐碎片化,每块可用空间都很小。3.全局及静态存储区主要存储全...原创 2018-05-23 16:52:12 · 1508 阅读 · 0 评论 -
指针和引用的区别
1.指针是变量的地址,引用是变量的别名。指针本身也是一个变量,指针的值是另一个变量的内存地址,指针指向这个变量,指针和指针指向的变量是两个不同的变量。引用是给变量起了一个别名,可以认为引用于原变量是同一个变量,只是这个变量有两个不同的名字。(1)sizeof运算符的意义不同,指针进行sizeof得到的是指针本身占用的空间,返回结果为4个字节;而引用进行sizeof得到的是原变量占用的空间,返回结果...原创 2018-06-13 14:17:22 · 345 阅读 · 0 评论 -
main函数执行前后都发生了什么
1.main函数第一行代码执行之前会调用全局对象和静态对象的构造函数,初始化全局变量和静态变量。2.main函数最后一行代码执行之后会调用在atexit中注册的函数,并且调用顺序和注册顺序相反。...原创 2018-05-14 10:19:01 · 1730 阅读 · 0 评论 -
malloc/free与new/delete的区别
1.malloc/free是C语言提供的库函数,通过函数调用访问,需要传递参数并接收返回值;而new/delete是C++提供的运算符,有自己的一套语法规则和运算方式。2.malloc/free函数只能应用于基本类型,而new/delete不但可以应用于基本类型,还可以应用于面向对象中的自定义类型。3.malloc函数返回的是void* 类型,程序需要显示地转换成所需要的指针类型;new操作符后面...原创 2018-05-14 10:18:48 · 134 阅读 · 0 评论 -
函数重载和函数覆盖的区别
1.函数重载是同一个类中的不同方法,函数覆盖是不同类中的同一方法;2.函数重载的参数列表不同,函数覆盖的参数列表相同;3.重载函数调用时根据参数类型选择方法,覆盖函数调用时根据对象类型选择方法。...原创 2018-05-26 10:31:15 · 744 阅读 · 0 评论 -
重载函数、覆盖函数的名字隐藏问题
所谓名字隐藏是指父类中有一组重载函数,子类在继承父类时如果覆盖了这组重载函数中的任意一个,则其余没有被覆盖的同名函数在子类中是不可见的。class Base{public: virtual void printf(int a){cout<<"Base print int"<<a<<endl;} virtual void printf(char a){c...原创 2018-05-26 08:48:49 · 74 阅读 · 0 评论 -
QDateTime、QString,int互转与拆分
【代码】QDateTime、QString,int互转与拆分。原创 2018-06-06 14:13:50 · 18560 阅读 · 1 评论 -
C++寻找素数
C++寻找素数,下面代码是每行输出10个素数。计算100以内的素数。100也可以修改为任意数。int main(){ bool bflag = false; int inum = 0; for (int i = 2; i <= 10000; i++) { bflag = false; for (int j = 2; j < i; j++) { if (i%j...原创 2018-05-04 14:23:27 · 8355 阅读 · 0 评论 -
C++中map的用法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识原创 2017-02-14 13:28:34 · 675 阅读 · 0 评论 -
C++排序之冒泡法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,...原创 2017-02-07 13:58:41 · 11207 阅读 · 3 评论 -
C++中一个Vector内容和动态数组
#include #include using namespace std; int main(){ vector Numvec; //定义一个整型的容器,它的类型是vector vector::iterator Numer; //定义一个整型容器的迭代器,它的类型是vector::iterator int intNum; while转载 2015-07-15 17:12:23 · 657 阅读 · 0 评论 -
截取字符串的部分字符方法
截取字符串的部分字符目前考虑的有两种方法1. 通过特殊字符来进行截取 strrchr 如字符串中有‘-’,那可以通过‘-’来截取。这种方法适合截取字符串的后面几位字符。获取字符串“1234567-wqk”的后三位字符。char szPointType[8];char* pChar = NULL;//查找数据类型 pChar = strrchr(“1234567-wq原创 2015-05-18 14:04:33 · 5028 阅读 · 0 评论 -
C++找出两个数组中不相同的数
1.定义两个结构体,对每个结构体定义一个vector,存放相应的内容,找出两个vector中不同的数据点int eql1 = 0; int eql2 = 0;std::vector m_RecvNew;std::vector m_SaveRecv;for (int i = 0; i < m_SaveRecv.size(); i++){ for (int j = 0; j < m_原创 2015-05-20 09:02:34 · 3751 阅读 · 0 评论 -
atoi(),atof(),atol();iato(),fato(),lato()---字符串和数字互相转换
1.数字转化为字符串 ● itoa():将整型值转换为字符串。 ● ltoa():将长整型值转换为字符串。 ● ultoa():将无符号长整型值转换为字符串。 ● gcvt():将浮点型数转换为字符串,取四舍五入。 ● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。 ● fcvt():指定位数为转换精度,其余同ecvt()。还转载 2015-05-05 19:03:30 · 894 阅读 · 0 评论 -
C++中vector用法
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector可以存放任意类型的数据:int,long,char,结构体等多种数据类型。1.在使用vcetor前,需要包含头文件:#i原创 2015-03-26 13:34:23 · 1276 阅读 · 0 评论 -
while循环中嵌套while循环,break退出分析
while (...) //(1){ while (...) //(2) {....; break;} .....;}在上例中,break 退出只能退出里面的while,也就是退出(2)。测试程序如下所示:#include int main(void){int i = 0;int原创 2015-04-10 13:35:52 · 13964 阅读 · 3 评论 -
C++ float转换int,四舍五入
正常的float 转换为 int 的情况是采用去尾巴的方式,也就是说去掉小数点后面的数值。1. 常规的float 转换为 int :例如: 9.34 = (int) 9 ; 9.99 = (int) 9 。#includeint main(){ float i = 9.34; float j = 9.99; int a, b; a = (int) i;原创 2015-04-02 18:01:06 · 49474 阅读 · 4 评论 -
世纪秒时间转换为日期时间字符串
C++中time(NULL)存库的时间为世纪秒时间,由于世纪秒时间我们还需要通过转换才能看到日期时间,这样很不方便,故在网上搜了一下这个转换的时间,为了以后自己能够随时用到,也为了加深自己的印象,就写在这里了。目前看到的方法还不少,我用了两种方法,就把这两种写在这吧:第一种:struct tm *newtime;long iSoc = time(NULL);int imil原创 2015-03-26 08:24:15 · 3804 阅读 · 0 评论 -
C++读取配置文件内中的数组
1.C++读取配置文件中的数组 数组内容存放在d盘test.txt文件中,内容为: 1 2 3 4 5 6 7 8 9 10 3 4 5 6 7 8 9 7 8 1 12 34 65 78 9 0 12 33 5 7程序如下:#include #include using namespace std;int main(/*int argc, char *ar原创 2015-07-16 17:42:39 · 1675 阅读 · 0 评论 -
编写程序输出每种内置类型的长度
程序如下:int main(/*int argc, char *argv[]*/){ cout << "type\t\t\t" << "size" << endl << "bool\t\t\t" << sizeof(bool) << endl << "char\t\t\t" << sizeof(char) << endl << "signed char\t\t" << size原创 2015-07-18 17:47:44 · 742 阅读 · 0 评论 -
C++排序之直接插入排序法
直接插入排序算法是将一个记录插入到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,...原创 2017-02-07 09:09:41 · 5016 阅读 · 2 评论 -
C++排序之直接选择排序法
直接选择排序算法是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的其起始位置,然后再从剩余未排序的序列元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素排序完毕。代码实现如下:#include using namespace std;void print(int a[], int n ){ cout<<n <<":原创 2017-02-06 14:54:38 · 5655 阅读 · 0 评论 -
C++排序之sort()的方法
sort()可以对vector的某个成员进行排序,但是不可保证相等元素的原本相对次序在排序后保持不变。下面为该函数的实现方法,其大致的程序思路参考C++之stable_sort()的方法。#include #include#include #include #include #include using namespace std;typedef struct TagNo原创 2017-02-06 13:46:38 · 834 阅读 · 0 评论 -
C++排序之stable_sort()的方法
stable_sort()可以对vector的某个成员进行排序,而且可保证相等元素的原本相对次序在排序后保持不变。下面是改函数的实现方法代码:#include #include#include #include #include #include using namespace std;typedef struct TagNode{ int value; int i原创 2017-02-06 13:23:51 · 22082 阅读 · 5 评论 -
日期时间转换为世纪秒
日期时间的不同写法,导致转换为世纪秒的方式不同,前一篇当时没想到更好的办法,便采用把字符串中的部分字符替换,然后再转换为世纪秒。下面将两种不同的日期形式转换为世纪秒。1. 日期形式为:yyyy/MM/dd hh:mm:sssztmp[32] = 2016/03/24 19:33:00QDateTime dtBDateTime = QDateTime::fromString(sztmp原创 2016-03-24 19:37:19 · 7359 阅读 · 0 评论 -
字符串中的部分字符替换
2016/03/21 17:20:51替换为2016-03-21 17:20:51由上是把字符串中的字符 ‘/’ 转换为 ‘-’char szTime[32] = "2016/03/21 17:20:51"for(int k = 0; k < strlen(szTime); k ++){ if('/' == szTime[k]) { szTime[k] = '-'原创 2016-03-24 15:08:02 · 529 阅读 · 0 评论 -
VS2003一点查找按钮就卡死处理方法
VS2003一点查找按钮就卡死处理方法:1.进入如下目录:C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\IDE。2.在此目录中查找文件devenv.exe。3.右键devenv.exe。4.选择属性。5.在弹出框中选择兼容性,勾选“禁用视觉主题”。6.完美解决问题。原创 2015-10-10 14:20:54 · 1544 阅读 · 0 评论 -
QString、string相互转换
QString、std::string、char三者相互转换。1、包含的头文件#include #include 2、转换函数:QString qstr;std::string str;str = qstr.toStdString();qstr = QString::fromStdString(str );3、QString转换为char可以通过string过渡:char原创 2015-08-03 20:09:26 · 510 阅读 · 0 评论 -
匈牙利命名法
刚开始写代码时,师傅说你这写的程序只有自己能看懂,别人是看不懂的,进而像我推荐了匈牙利命名法,为了更好的掌握这个命名法则,参考网上资料总结了一些匈牙利命名法。基本原则是:变量名=属性+类型+对象描述1. 属性一般有如下四种:g_ 全局变量 c_ 常量m_ c++类成员变量原创 2015-03-25 13:21:53 · 924 阅读 · 0 评论