
c++
文章平均质量分 89
蔡松豆
这个作者很懒,什么都没留下…
展开
-
mysql 从linux 代码移植到windows mysql_fetch_row 接收不到任何数据,mysql也不反回错误
简直了,mysql从linux移植到windows,编译通过,甚至也能正常插入数据,但是查找的时候就是找不到,mysql也不返回错误,找了一整天,代码怎么查都没问题,况且在linux平台运行完美 最后,忽然想仔细看看warning,看到了一句warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失于是乎,修改了编码,程序正原创 2018-01-30 23:14:11 · 499 阅读 · 0 评论 -
C++知识点
1.inline 内联函数使用 inline 关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如:若此函数体太大,则不会把它作为内联函数展开的头文件中不仅要包含 inline 函数的声明,而且必须包含定义,且在定义时必须加上 inline 。【关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用】inline 函原创 2017-05-02 14:57:19 · 267 阅读 · 0 评论 -
C++关联数组
C++标准库:std_map作为一个关联数组摘要:std::map作为一个容器存在一个典型应用就是作为关联数组来作用。在诸如Java等等语言中,关联数组广泛存在。std::map是一个容器,在它的概念框架中存在两个词:键和值,std::map把一个键与一个值相对,它相当于一个字典,把一个索引和一人内容对应起来。一般情况下,std::map用一个平衡二叉树来实现的,所以它的大部分操作都可以log(n)转载 2017-09-03 00:21:25 · 2507 阅读 · 0 评论 -
C/C++编写程序以获取文件夹内所有子文件名
参考:http://www.cnblogs.com/xudong-bupt/p/3504442.html#利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多博文:头文件如下:[cpp] view plain copy#include <iostream> #include <stdlib.h> #include <stdio.h> #include <string.转载 2017-08-23 17:39:59 · 4550 阅读 · 0 评论 -
c++计算程序时间
#include<iostream>#include<windows.h>int main(){DWORD start_time=GetTickCount();{//此处为被测试代码}DWORD end_time=GetTickCount();cout<<"The run time is:"<<(end_time-start_time)<<"ms!"<<endl;//输出运行时间转载 2017-09-07 19:40:21 · 287 阅读 · 0 评论 -
结构体中含有string 会异常的原因和解决办法
#include <iostream>#include <string>#include <cstdio>using namespace std;typedef struct node{string str;}NODE;int main(){string var = "lirao";NODE * node = (NODE *)malloc (sizeof(NODE));node->转载 2017-09-07 14:01:29 · 7965 阅读 · 5 评论 -
linux下使用libmad库实现mp3文件的解码、播放
linux下使用libmad库实现mp3文件的解码、播放 <div class="article_manage clearfix"> <div class="article_r"> <span class="link_postdate">2013-07-12 16:27</span> <spa转载 2017-08-20 23:05:38 · 4000 阅读 · 0 评论 -
嵌入式Linux 使用libmad
搞了几天的libmad,终于安装完成了。本来打算利用libmad写一个嵌入式Linux的MP3音乐播放器,于是乎去网上看了很多教程和资料,本以为按着上面的方法就可以顺利完成的,但是谁知一下就搞了好几天。细细想来究其原因大概有两个:一个是技术发展太快,很多资料已经过时了;另一个就是网上的资料都是盲目转载大同小异,并没有太多的营养,牵扯到许多细节问题都忽略而过。所以为了给更多的人提供方便,我就写这篇文章转载 2017-08-18 19:53:05 · 1319 阅读 · 0 评论 -
linux c++ kill进程
kill(传送信号给指定的进程)表头文件 #include<sys/types.h> #include<signal.h>定义函数 int kill(pid_t pid,int sig);函数说明 kill()可以用来送参数 sig 指定的信号给参数 pid 指定的进程。参数 pid 有几种情况: pid>0 将信号传给进程识别码为 pid 的进程。 pid=0 将转载 2017-08-17 17:22:21 · 9117 阅读 · 0 评论 -
详解C中volatile关键字
详解C中volatile关键字volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:sho转载 2017-10-06 19:22:23 · 1359 阅读 · 0 评论 -
RTTI机制与作用
一、RTTI(Run-Time Type identification),通过运行时类型信息,程序能够使用基类的指针或引用来检查这些指针或引用所指向的对象的实际派生类型。面向对象的编程语言,想C++,Java,delphi都提供了RTTI的支持。RTTI并不是什么新技术,很早就有了,他主要提供了运行时确定类对象类型的方法。最近有用到这个RTTI,对它进行了一番小研究,下面做个小小的总结吧!在C++转载 2017-10-06 20:09:24 · 980 阅读 · 0 评论 -
霍夫曼编码
霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种。霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。霍夫曼编码的具体步骤如下:1)将信源转载 2017-10-09 20:13:43 · 2629 阅读 · 0 评论 -
glog的使用方法vs下配置和使用
一、下载二、配置1,动态库libglog.dll和libglog.lib(1)在新建工程的 Project -> Properties -> C /C++ -> General -> Additional Include Directories 添加Glog\include(2)在在新建工程的 Project -> Properties -> Linker -> General -> Addit原创 2017-12-21 10:06:43 · 1797 阅读 · 0 评论 -
多线程互斥量Mutex的使用
CRITICAL_SECTION hMutex_Show; // 申请变量InitializeCriticalSection( & hMutex_Show); //初始化互斥量EnterCriticalSection(&hMutex_Show); //加锁。。对多线程公用的变量的操作。LeaveCriticalSection(& hMutex_原创 2017-12-12 13:51:29 · 584 阅读 · 1 评论 -
浮点数的二进制表示学习笔记
转载于浮点数的二进制表示学习笔记 基础知识: 十进制转十六进制; 十六进制转二进制; IEEE制定的浮点数表示规则; 了解: 目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格:转载 2017-11-06 14:41:07 · 1172 阅读 · 0 评论 -
c/c++变量的存储位置
变量的内存一般分为5部分栈区stack:由编译器自动分配释放,,存放函数的参数值,局部变量等,对栈的操作方式类似于数据结构中的栈堆区heap :一般由程序员分配释放,如果程序员不释放,程序结束时可能由OS挥手,但是它与数据结构中的堆是两回事,分配方式类似于链表。全局区(静态区)satic: 全局变量和静态变量的存储是放在一块的。初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和静态变转载 2017-11-06 14:38:29 · 1215 阅读 · 0 评论 -
Win32下两种用于C++的线程同步类(多线程实现加锁解锁)
使用Win32提供的临界区可以方便的实现线程锁: // 全局: CRITICAL_SECTION cs; InitializeCriticalSection( & cs); // 线程1: EnterCriticalSection( & cs); int a = s.a; int b = s.b; LeaveCriticalSection( & cs); // 线程2: En转载 2017-11-20 11:52:10 · 1489 阅读 · 0 评论 -
CFileDialog打开文件或文件夹操作
// 打开文件CFileDialog fileDialog = CFileDialog(FALSE, NULL, NULL, OFN_READONLY, L"GIF Files (*.gif)|*.gif|All Files (*.*)|*.*||",this); if (fileDialog.DoModal() == IDOK) { CString strPath = fileDial转载 2017-11-14 14:52:43 · 3022 阅读 · 0 评论 -
结构体位域操作
一 位域的形式有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个转载 2017-10-06 16:15:17 · 1169 阅读 · 0 评论 -
C++使用: C++中map的基本操作和用法
C++使用: C++中map的基本操作和用法 在阅读SSD代码中发现作者使用了C++中的map方法,因此搜索该关联式容器的使用方法,在这里一并总结。一、Map 簡介Map是STL的一個容器,它提供一對一的hash。第一個可以稱為關鍵字(key),每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值(value转载 2017-10-01 20:51:32 · 756 阅读 · 0 评论 -
字符编码格式串转换之C语言版(UTF-8, Unicode, GB2312)
UTF-8, Unicode, GB2312格式串转换之C语言版 (申明:此文章属于原创,若转载请表明作者和原处链接 ) /* author: wu.jian (吴剑) English name: Sword /* date: 2007-12-13 /* purpose: 知识共转载 2017-06-13 22:45:26 · 15812 阅读 · 2 评论 -
C++枚举类型和typedef声明新的类型名
如果一个变量只能有几种可能的值,可以定义为枚举类型。所谓枚举类型就是把变量的值一一列举出来,变量的值只能在列举出来的值的范围内。enum weekday{sun,mon,tue,wed,thu,fri,sat};上面声明了一个枚举类型weekday,花括号里的称为枚举元素或枚举常量。表示这个类型的变量只能是以上7个值之一。在声明了枚举类型后,可以用它来定义变量。weekday workday,原创 2017-06-12 21:21:40 · 2311 阅读 · 0 评论 -
C++引用
什么是变量的引用? 引用是一个名词,对一个数据可以建立一个引用,它的作用是为一个变量起一个别名。这是c++对C的一个重要扩充,假如有一个变量a,想给他起一个别名b int a; int &b=a; 在上述声明中&是引用声明符,不是地址。引用不是一种独立的数据类型。对引用只有生命,没有定义。必须先定义一个变量,然后声明对该变量建立一个引用。声明一个引用时,必须同时使之初始化,既原创 2017-06-12 20:31:20 · 198 阅读 · 0 评论 -
c++标准输入输出流的控制符
dec 设置整数的基数为10 hex 设置整数的基数为16 oct 设置整数的基数为8 setbase(n) 设置整数的基数为n(n只能是16,10,8之一) setfill(c) 设置填充字符c,c可以是字符常量或字符变量 setprecision(n) 设置实数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位数)形式和scientifi转载 2017-05-29 16:19:06 · 6173 阅读 · 0 评论 -
c语言的union和struct
什么是union(联合体)? union(联合体):union是一个能在同一个存储空间(但不同时)存储不同类型数据的数据类型。 例如:union test1{ char a; int b; short c;}; 结构体(struct):是由一系列具有相同类型或不同类型的数据构成的数据集合 例如:struct test2{ char aa;原创 2017-05-17 21:14:01 · 831 阅读 · 0 评论 -
算法题递归函数int mystrlen(char *buf, int N)是用来实现统计字符串中第一个空字符前面的字符长度。
举例来说char buf[] = { 'a', 'b', 'c', 'd', 'e', 'f', '\0', 'x', 'y', 'z' }; 字符串buf[],当输入N=10,或者20时输出6,N=3或者5时输出3或者5; 下面是具体算法#include<iostream>using namespace std;int mystrlen(char *buf, int N){ if原创 2017-05-16 15:32:18 · 685 阅读 · 0 评论 -
windows下C++监测内存泄漏
Windows平台下面Visual Studio 调试器和 C 运行时 (CRT) 库为我们提供了检测和识别内存泄漏的有效方法,原理大致如下:内存分配要通过CRT在运行时实现,只要在分配内存和释放内存时分别做好记录,程序结束时对比分配内存和释放内存的记录就可以确定是不是有内存泄漏。在vs中启用内存检测的方法如下:STEP1,在程序中包括以下语句: (#include 语句必须采用上文所示顺序。 如果转载 2017-05-25 23:08:19 · 3404 阅读 · 0 评论 -
C实现不定长数组
写程序的时候经常要定义这样一个数组,要前面程序运行后才能知道数组的大小,然而C语言不支持不定长数组的定义,但是我们可以通过动态数组实现一个不定长度的数组。一维数组:#include<stdio.h>#include<stdlib.h>//要使用malloc是要包含此头文件#include <memory.h>//要使用memset是要包含此头文件int main(){ int m;原创 2017-05-18 21:29:11 · 34168 阅读 · 1 评论 -
vs生成动态库及使用动态库
动态库(.dll):动态库又称动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用原创 2017-05-25 21:51:30 · 12157 阅读 · 0 评论 -
vs2013创建静态库并使用静态库
A:首先要生产成静态库1.. 创建工程——win32项目 My_Static_lib_1 2.. 选择静态库,预编译头和安全开发生命周期(SDL)检查可要也可不要,我们这里选择不要 3.. 完成 4.. 添加源文件:static.cpp 测试程序#include "static.h"int sum(int m,int n){ return m + n;}5原创 2017-05-19 13:46:39 · 7890 阅读 · 0 评论 -
C/C++ 基础——this指针
this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。所谓当前对象,是指正在使用的对象。例如对于stu.show();,stu 就是当前对象,this 就指向 stu。下面是使用 this 的一个完整示例:#include <iostream>using namespace std;class Student{public:转载 2017-05-15 17:11:17 · 450 阅读 · 0 评论 -
c++指向对象成员函数的指针
#include<iostream>#include <iomanip>using namespace std;class Time{private: int hour; int minute; int second;public: Time(int a, int b, int c)//构造函数 { cout << "Start"原创 2017-05-30 17:03:53 · 828 阅读 · 0 评论 -
c++函数模板和类模板
函数模板:实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用的函数就称为函数模板。#include <iostream>using namespace std;template<typename T>T Max(T a,T b){return a>b?a:b;}int main(){cout <<Max(1,2)<<endl;cout <<M原创 2017-05-28 17:41:34 · 297 阅读 · 0 评论 -
c++运算符的重载
重载运算符“+”实现复数的相加 下面是代码#include<iostream>using namespace std;class Complex{private: double real;//实部 double imag;//虚部public: Complex(double real = 0, double imag = 0);//构造函数 ~Com原创 2017-05-31 15:08:25 · 243 阅读 · 0 评论 -
c 字符串处理函数,字符串类和字符串变量
1.字符串连接函数strcat其函数原型为strcat(char[],const char[]);作用是:将第二个字符数组中的字符串连接到第一个字符数组的字符串后面。#include <iostream>#include <cstring>using namespace std;int main(){ char a[]="You are so "; char b[]="beau原创 2017-06-12 19:58:26 · 344 阅读 · 0 评论 -
c++命名空间
为什么需要命名空间?命名空间是ANSI C引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突什么是命名空间所谓命名空间,实际上就是一个由程序设计者命名的内存区域。程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来,如namespace ns1{int a;double b;}说明:1.a和b仍是全局变量,仅仅是把他们隐藏在命原创 2017-06-12 00:05:48 · 278 阅读 · 0 评论 -
c++异常处理
c++异常处理机制由三个部分组成:检查(try),抛出(throw),和捕捉(catch)首先把可能出现异常的,需要检查的语句或者程序段放在try后面的花括号中程序开始运行后,按正常的顺序执行到try块,执行try块中花括号内的语句。如果在执行try块内的语句过程中没有发生异常,则try-catch结构中的catch字句不起作用,流程转到catch字句后面的语句继续执行。如果在执行try块内的原创 2017-06-11 17:49:24 · 271 阅读 · 0 评论 -
c++标准输入流
cincin是istream类的派生类对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符>>从流中提取数据。提取数据时通常跳过输入流中的空格,Tab键,换行符等空白字符。只有在键盘输入完数据并按Enter键之后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符>>才能从中提取数据在遇到无效字符或者文件结束符时(不是换行符,是文件中的数据已经读完),输入流cin就处于出错状态,原创 2017-06-04 17:03:19 · 2261 阅读 · 0 评论 -
C++抽象类
1、凡是包含纯虚函数的类都是抽象类。因为纯虚函数是不能被调用的,包含纯虚函数的类是无法建立对象的。2、如果在派生类中没有对所有纯虚函数进行定义,则此派生类仍然是抽象类,不能用来定义对象。3、可以定义指向抽象类的指针。下面是代码#include<iostream>using namespace std;#define PI 3.1415926/**************************原创 2017-06-03 20:48:41 · 440 阅读 · 0 评论 -
C++虚函数实现多态
C++是通过虚函数来解决多态问题的 虚函数,就是在基类声明函数是虚拟的,并不是实际存在的函数,然后再派生类中才正式定义此函数。在程序运行期间,用指针指向某一派生类对象,这样就能调用指针指向的派生类对象中的函数,而不会调用其他派生类中的函数。 注意:虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或者引用来访问基类和派生类中的同名函数。通过代码看看虚函数的作用#原创 2017-06-03 18:56:43 · 2777 阅读 · 0 评论