C++基础
不要做程序员的小松鼠
愉快的调bug......
展开
-
数据类型转换总结(随时更)
1、int 转 Cstringint s = 123; CString str;str.Format("%d",s); 或str.Format(_T("%d"), s);(这个比较稳!)原创 2015-02-09 17:54:14 · 522 阅读 · 0 评论 -
C++基础知识——引用
1.引用就是变量的别名,需要用另一个变量或者对象进行初始化:int &b = a。 2.引用必须初始化,初始化时引用指向的对象必须存在。 3.引用和变量指向同一块内存,通过引用可以改变内存中的内容。 4.通常用在函数的形参定义上:void swap(int &a,int &b)。 5.引用已经指向一个对象之后,这个引用不能指向其他对象。 6.一个指向非常量的引用是不可以用字面值或者临时值进原创 2016-05-03 16:25:43 · 403 阅读 · 0 评论 -
C++基础知识——指向指针的指针
1.数组名会退化为首元素的指针,所以指针数组的名字是一个指向指针的指针: int *a[10]; int **b = a;2.由1我们可以理解二重指针为,该指针指向一个数组,这个数组的每个元素都是指针。3.当一个函数需要改变传递给它的指针的值的时候,使用多重指针,也可以用指向指针的引用作为参数(简单且安全)。在数据结构中常会用到。#include <stdio.h>#inclu原创 2016-05-03 17:13:37 · 597 阅读 · 0 评论 -
Error:‘itoa’ was not declared in this scope
解决方法 c++11: std::to_stringsprintf stdio.hchar *c = new char; sprintf(c,"%d",num);stringstream sstream.hstringstream ss; int x = 1; ss << x; string str = ss.str();原创 2016-05-03 19:40:12 · 11393 阅读 · 4 评论 -
C++基础知识—常量和常成员函数
1.常量:程序运行的整个过程中,其值始终不可改变的量,const int a = 100;同int const a = 100。2.指向常量的指针:const char *c = "abc"; 与 char const *c = "abc";相同,const的修饰符是char。c[2] = 'd';//F 不能修改指向的常量c = "def";//T数组名退化为指针,指针的值可以原创 2016-05-04 17:29:21 · 790 阅读 · 0 评论 -
STL 使用遇到的问题汇总(更新中)
1.二重容器写法: vector > array2(3);// 注意> 和> 之间的空格!!!原创 2016-05-05 09:30:55 · 451 阅读 · 1 评论 -
C/C++获得当前程序路径
获得工作目录如下:[cpp] view plain copy#include #include char buffer[MAX_PATH]; getcwd(buffer, MAX_PATH); printf( "The current directory is:转载 2016-05-05 15:47:24 · 601 阅读 · 0 评论 -
C++去除文件名中的空格
思路遍历文件,详见点击打开链接去除文件名中的空格char *strRemov(char* dst, const char* src, char ch = ' '){ int i = -1, j = 0; while (src[++i]) if (src[i] != ch) dst[j++] = src[i]; dst[j] = '\0'; return dst;}原创 2016-05-05 16:17:11 · 1385 阅读 · 0 评论 -
C++ cin被跳过
问题:今天写代码发生了第二个cin被跳过的情况,原来是因为我的第一个cin,输入的是文件路径,较长,自动换行了,也就产生了两次换行(\n),所以第二个cin发现有换行就不等待输入了,直接存了一个空的内容。解决方法:cin.ignore()basic_istream& ignore( streamsize _Count = 1, int_type _Delim = tra原创 2016-05-05 16:39:37 · 7396 阅读 · 2 评论 -
C++创建文件夹
头文件:direct.h代码:#include "stdio.h"#include "direct.h"int main(){int status=0;status=mkdir("D:\\mydir");printf("status=%d",status);return 1;}注:路径不要写成 status=mkdir("D:\mydir");虽然也能生成文件夹原创 2016-04-14 19:20:52 · 685 阅读 · 0 评论 -
C++基础知识——二维数组做函数参数
1.确定大小的二维数组void Func(int array[3][10]); void Func(int array[][10]); 2.不确定大小的二维数组转为二维指针:从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,所以可以转换成二维指针。void Func(int **array, int m, int n);原创 2016-05-06 21:03:08 · 1224 阅读 · 0 评论 -
C++基础知识——变量存储位置
1.栈区(stack):程序运行时由编译器自动分配存放:函数的参数值,局部变量的值。存储连续,其操作方式类似于数据结构中的栈。栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的,所以空间有限,windows下大多1-2M。2.堆区(heap): 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。存放:程序员原创 2016-05-06 10:31:09 · 1353 阅读 · 0 评论 -
MFC Picture控件中截图
最近要训练分类器,采集图像正负样本,写个小程序提高效率。 - 思路: - 获取鼠标左键的点击位置 - 将鼠标的坐标原点改为控件的坐标原点(默认的是对话框) - 判断鼠标在Picture控件内 - 设置flag = 1,表示第一次点击。 - 获取鼠标移动的位置 - 判断鼠标左键是否第一次点击(i原创 2016-04-22 12:20:39 · 2143 阅读 · 0 评论 -
C++基础知识 动态链接库和静态链接库
动态链接库dll: Dynamic-link Library是一种不可执行的二进制程序文件,包含被可执行程序和其他dll调用的函数。windows中最重要的dll: Kernel32.dll:管理内存、进程、线程。User32.dll:执行用户界面任务,比如窗口的创建和消息的传送。GDI32.dll:画图和显示文本。dll不是唯一的扩展名,如linux下常常是.so。使用: 需要文件原创 2016-05-09 19:45:39 · 1999 阅读 · 0 评论 -
C++基础——深拷贝&浅拷贝
在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存(在堆内存中)。可以理解为深拷贝是建了一个一模一样的副本,拷贝后共有两个实体对象。而浅拷贝只是一个链接,链接的目标还是原来的对象,实体对象数目还是一个。采用深拷贝的情况下,释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误。默认生成的拷贝构造函数是浅拷贝,对任何一个对象的改变都会影响原创 2016-09-03 10:13:12 · 408 阅读 · 0 评论 -
C++基础——回调函数
回调函数就是一个通过函数指针调用的函数(函数指针的一种用法)。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。写一个函数,让系统调用你的函数,那就是回调了,那个被系统调用的函数就是回调函数。回调函数是指达到某些条件,某些事情已经发生,就会调用回调函数,也就是事件触发函数执行。windows窗口消息处理函数大多都是回调函数。回调函原创 2016-09-03 14:09:47 · 442 阅读 · 0 评论 -
字符串中数字子串的求和
字符串中数字子串的求和题目: 给定一个字符串str,求其中全部数字串所代表的数字之和。要求: 1.忽略小数点字符,例如“A1.3”,其中包含两个数字1和3。 2.如果紧贴数字子串的左侧出现字符‘-’,当连续出现次数为奇数时, 则数字视为负,连续出现的数量为偶数时,则数字视为正。 例如:“A-1BC--12”,其中包含数字为-1和12。例:原创 2016-05-13 21:18:35 · 1282 阅读 · 0 评论 -
C++ 结构体指针的定义
struct node { …… } ; struct node *p1, *p2 ;typedef struct node { …… }Node;typedef Node* pNode;typedef struct node { ……}*pNode;原创 2016-05-02 21:49:57 · 4736 阅读 · 0 评论 -
C++计算代码片运行时间
#include "time.h"using namespace std;int main(){ clock_t start, finish; double time_length; start = clock();//start //计算时间的代码片 finish = clock();//finish time_length = (do原创 2016-04-18 19:00:53 · 1795 阅读 · 0 评论 -
c++获得本地时间
#include #include int main(void){ 法一:使用strftime(时间格式化函数) time_t t = time(0); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) ); puts( tmp原创 2015-02-09 17:59:35 · 680 阅读 · 0 评论 -
字符匹配新方案——宽字符wchar_t
在c99标准里,增加wchar_t,也就是宽字符,省事了好多有木有,一位宽字符就可以存一个汉字了!摘自百科:char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定wchar_t为32位[1] ,总之,wchar_t原创 2015-04-16 08:34:44 · 1521 阅读 · 0 评论 -
C/C++生成随机数
如果要想每次生成不同随机数,就需要用一个随时间变化的量作为种子,比如系统时间,程序时间等,下面为转载内容:C/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0转载 2015-05-15 10:15:46 · 713 阅读 · 0 评论 -
vector的成员函数解析
vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问元素,还可以使用指针的偏移方式访问,和常规数组不一样的是,vector能够自动存储元素,可以自动增长或缩小存储空间,vector的优点:1. 可以使用下标访问个别的元素2.转载 2015-07-16 09:02:22 · 561 阅读 · 0 评论 -
在C++中一些小问题
#include "time.h"using namespace std;int main(){ clock_t start, finish; double time_length; start = clock();//start存储的是当前的时刻 ....................... finish =原创 2015-07-16 09:30:26 · 590 阅读 · 0 评论 -
Windows应用程序设计基础(一)句柄&消息
句柄:其实是一种复杂对象的标识,这些对象比如窗口有窗口句柄HWND等,就是一种标识符,标识对象或者项目,一般为整数。句柄是一种特殊的智能指针。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。windows应用程序数据类型:RECT POINT等,皆为大写。消息与消息队列程序启动并创建程序窗口之后 ,程序就进入等待状原创 2016-01-05 19:21:57 · 619 阅读 · 0 评论 -
C++ 构造函数初始化列表
构造函数中,成员变量一定要通过初始化列表来初始化的有以下几种情况:1、const常量成员,因为常量只能在初始化,不能赋值,所以必须放在初始化列表中;2、引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表中;3、没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数;笔试题第一题原创 2015-12-27 11:59:06 · 488 阅读 · 0 评论 -
类型转换:浮点数在内存中的存储方式以及(int&)a的意义
浮点数在内存中的存储方式float 占4字节,32位:符号位1 阶码8 尾数23原创 2016-01-13 11:05:12 · 1010 阅读 · 0 评论 -
C++判断文件是否存在
判断文件是否存在的方法原创 2015-11-14 10:18:15 · 589 阅读 · 0 评论 -
c++ 暂停方法
1.类似于cmd下的pause头文件:#include语句:system("pause");2.opencv中cvwaitkey(int delay):delay>0 如果没有键盘触发等待delay时间else:一直等待3.sleep(毫秒),delay(毫秒),注意,delay要使用 ctime头文件。4.getchar()、getch()getchar(原创 2016-04-25 21:28:40 · 9162 阅读 · 0 评论 -
遍历文件夹下某种类型文件名(C++)
在文件夹下,查找某后缀的文件: vector findfileinfolder(string fileFolderPath, string fileExtension)//文件路径和后缀名{ string fileFolder = fileFolderPath + "\\*." + fileExtension; vector file; char fileName[2000];原创 2016-04-26 22:04:51 · 4138 阅读 · 0 评论 -
VS 主函数赋命令行参数
argc命令行总的参数的个数,即argv中元素的格式。argv[ ]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数argv[0]:指向程序的全路径名argv[1]:指向在DOS命令行中执行程序名后的第一个字符串。argv[2]:指向第二个字符串。菜单[项目] -> 属性页 -> 配置属性 -> 调试 argv[1] = “..”原创 2016-04-10 19:30:10 · 537 阅读 · 0 评论 -
项目中添加lib的方法
法1: 通过设置工程配置来添加lib库.VS中lib静态库路径:工程->属性->配置属性->链接器->常规->附加库目录:加上lib文件存放目录。lib文件名:工程->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。VClib静态库路径:工具->选项->目录lib文件名:工程->设置->连接debug和release要分开配置。法2:通原创 2016-04-14 20:12:40 · 2055 阅读 · 0 评论 -
C++编译链接
编译:compile,先针对单独原文件进行处理。每个cpp文件(文本形式存在的源代码)作为一个编译单元,被独立编译成一个目标文件(obj,机器语言形式),它用目标语言来描述.cpp的内容。不同CPP文件的函数可以通过声明的方式使用,通常声明放在H文件里。链接:link,把compile处理的结果组合成一个完整的可执行文件。接器将所有的目标文件obj链接起来,形成一个.exe原创 2016-05-10 19:56:46 · 520 阅读 · 0 评论 -
C++基础——vector内存释放
vector内存释放 之前看到这个问题,没有细究,过了两天被问到这个问题!!!为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。STL实现者在对vector进行内存分配时,预留了一些额外的存储区,用于存放新添加的元素。size():成员指当前拥有的元素个数。 capacity():成员指当前(容器必须分配新存储空间之前)可以存储的元素个数。内原创 2016-05-11 21:27:20 · 5044 阅读 · 0 评论 -
C++写入txt文件方法
用ofstream 输出流,#include ofstream outf; outf.open("abc.txt");outfoutf.close();觉得好就微信赞我吧原创 2016-05-05 16:03:13 · 30694 阅读 · 0 评论