C++
feiyang5260
需要加强学习的码农
展开
-
c++开发之stringstream处理浮点数长度问题
stringstream,istringstream,ostringstream区别stringstream:同事支持c风格字符串的输入输出操作istringstream:用于执行c风格字符串的输入操作ostringstream:用于执行c风格字符串的输出操作通常ostringstream类用来格式化字符串,避免申请大量的缓冲区,替代sprintf. 该类能够根据内容自动分配内存,其对内存的管理也...原创 2018-05-15 21:53:15 · 10946 阅读 · 1 评论 -
哈希表原理
1.哈希表是什么 哈希表(hash table,又叫散列表),其原理的核心就是哈希函数(即散列函数),即如何构建一个确定的映射,它能把关键字映射到一个唯一的存储位置,如下公式所示记录的存储位置=f(关键字)f为散列函数,又称哈希函数。通过此函数将值映射到表中的一个位置来访问记录,以加快查找的速度,存放记录的数组叫做散列表。2.Hash表的基本思路假设ki为某个对象的关键...转载 2019-05-30 21:39:50 · 337 阅读 · 0 评论 -
笔记:利用gdb调试程序
gdb是unix平台下的调试工具。当程序出现段错误时,用此可以迅速找出出错的代码行。该方法原理是:linux的core dump机制,当程序出现内存操作错误时,会发生崩溃并产生核心文件(core文件),利用GDB可对core文件进行分析,找出程序是什么时候崩的,以及在崩之前都做了什么主要步骤如下1.生成core文件,默认情况下,程序崩溃是不生成core文件的,利用如下命令在程序崩溃时会...转载 2019-03-29 21:00:31 · 198 阅读 · 0 评论 -
笔记:c++四种线程同步方式
1.为什么线程同步 比如多个线程同时访问一个全局变量,如果是读取则没问题,如果某个线程改变此变量的值,与此同时其他线程读取该变量值时,不能保证读取到的数据是不是经过那个写线程修改过的。 为了确保获取到的数据是经过线程修改过的,就必须在线程写入变量时,禁止其它线程对此变量做任何访问,直到数据写入完成之后再接触对其它线程的访问限制,这就是线程同步。2.线程同步与互...原创 2019-03-26 21:37:37 · 1017 阅读 · 0 评论 -
笔记:c++虚函数和纯虚函数
虚函数:简单讲即实现多态,基类定义了虚函数,子类可以重写该函数,通过虚函数表调用该函数。每一个含有虚函数(无论该虚函数是本身,还是继承而来的)类,都有一个对应的虚函数表。表中存放着该类所有虚函数对应的函数指针。如其中:vptr:每个对象有一个vptr指针,指向虚函数表。Vptr的设定和重置都是由一个类的构造函数,析构函数和拷贝赋值运算符自动完成。B的虚函数表中存放有B:...转载 2019-03-19 23:06:55 · 206 阅读 · 0 评论 -
c++中malloc和new对比
使用malloc和new是由于为了节约内存,很多数据都是动态生成的。1.malloc函数如下是分配长度为100个字节的内存块,返回值为void* ,表示未确定类型的指针。因此往往需要加上强制转换,如下所示,malloc和free一起使用。char *p;p=(char *)malloc(100); //分配成功则返回分配后内存空间的首地址,不成功则返回空指针null1.1mallo...转载 2019-03-19 21:07:48 · 981 阅读 · 0 评论 -
对象句柄运算符 (^)(C++ 组件扩展)
“句柄声明符”(^,发音为“hat”)会修改类型说明符,表示当系统确定声明的对象已不再可以访问时,应当自动删除该声明的对象。gcnew关键字表示在托管堆上分配内存,并且为了与以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下:1. gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址.2. gcnew创建的对象由虚拟机托管,而new创...转载 2019-03-13 21:37:58 · 334 阅读 · 0 评论 -
C++容器中列表list和向量vector区别
关于容器:容器是可以用于存放各种类型的数据的数据结构如 vector<int> v1;C++标准模板库(STL)提供三类容器:(1)顺序容器,如vector,list,deque(双端队列)等(2)关联容器,如set(集合),multiset(多重集合),map(映射),multimap(多重映射)等(3)容器适配器,如stack(栈),queue(队列),priority...原创 2019-02-28 21:24:49 · 2429 阅读 · 0 评论 -
关于c++杀线程函数TerminateThread强烈不建议使用
TerminateThread强烈不建议使用,因为这个函数的执行是异步的,你无法保证调用之后会立即退出,同时线程的堆栈均不会被销毁,导致内存泄露。如果调用了这个函数,请确保使用WaitForSingleObject来等待线程对象的结束。 参考链接:https://blog.csdn.net/kofandlizi/article/details/6458011https...原创 2018-12-18 21:28:11 · 17912 阅读 · 0 评论 -
C++读写csv文件(vs2010实现)
转载自:https://blog.csdn.net/u012234115/article/details/64465398本例子用vs2010实现,实现过程如下:新建项目,选择Visual C++->win32控制台应用程序,命名后点击确定 源文件中添加文件read_csv_file.cpp,read_csv_file.cpp文件内容如下 #include <iostre...转载 2018-10-23 16:45:53 · 19364 阅读 · 3 评论 -
vs2010创建控制台程序使用C++读写excel文件(ODBC方式)
转自:https://www.cnblogs.com/renjiashuo/p/7545784.html 用ODBC实现读写excel文件优点:(1).不需要安装office,只需要有Excel驱动即可(Microsoft Excel Driver (*.xls))(2).不需使用MFC,代码少,使用方便 vs2010下亲测可用,流程如下:vs2010建立...转载 2018-10-17 17:18:49 · 1048 阅读 · 0 评论 -
基于微软自带的CInternetSession和CFtpConnection类库实现ftp的上传和下载demo
可登陆浏览器ftp://***.***.***.***查看文件目录无现成ftp服务器的可以自己建立一个,方法自行百度亲测可用,环境为vs2010,新建一个空项目后,添加如下主程序文件ftp_demp.cpp代码如下: #include <iostream>#include <afxinet.h>#include <stdio.h>#i...原创 2018-10-12 17:14:21 · 1499 阅读 · 1 评论 -
C++用CreateThread创建线程与判断线程超时
Int a=0; DWORD ThreadID; HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTE)fun,&a,0,&ThreadID)if(WAIT_TIMEOUT==WaitForSngleObject(hMutex,60000)) //超时时间60秒{ cout<<"fun线...原创 2018-07-13 10:01:02 · 3142 阅读 · 0 评论 -
C++防止同时写数据,利用互斥量mutex实现同步
先声明一个互斥体句柄,再创建一个互斥体,代码如下://Create MutexhMutex = CreateMutex(NULL,false,"mutex"); WaitForSingleObject(hMutex,INFINITE); //INFINITE表示不限时,也可设置超时时间,单位ms//在此代码是进行写数据操作//..........................//....原创 2018-07-13 09:57:33 · 282 阅读 · 0 评论 -
数组指针和指针数组
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针 例子1int *p[3];//定义p[3]为指针数组int (*q)[3];//定义q为数组指针 例子2int (*p)[j];为数组指针ps:(*(p+i)[j])等价于p[i][j]; ...原创 2018-07-11 09:34:02 · 99 阅读 · 0 评论 -
一句话区分指针变量和变量指针
区分是常量指针还是指针常量,关键要看const修饰的是谁。int const与const int表达的意思是一样的。常量指针:const在*前面,指向常量的指针int const *n;或者是 const int *n;指针常量:const在*后面,指针本身是常量,不可修改int *const n;例子:1.常量指针int a,b;const int *p = &a;//常量指针 *...原创 2018-07-11 09:31:30 · 6646 阅读 · 1 评论 -
C++中的c_str()函数
const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针比如:最好不要这样:char* c;string s="...原创 2018-07-11 09:16:04 · 225 阅读 · 0 评论 -
C++句柄声明符(^,发音为"hat")
对象句柄运算符 (^)(C++ 组件扩展)“句柄声明符”(^,发音为“hat”)会修改类型说明符,表示当系统确定声明的对象已不再可以访问时,应当自动删除该声明的对象。gcnew关键字表示在托管堆上分配内存,并且为了与以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下: 1. gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址. 2. ...转载 2019-06-02 09:38:34 · 587 阅读 · 0 评论