![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【C++】
莫干
这个作者很懒,什么都没留下…
展开
-
获取运行文件路径 ,TCHAR 转 CString
例子:获取运行文件上一级目录。将如下代码放在构造函数中。 TCHAR moduleFileName[260]; ::GetModuleFileName(NULL,moduleFileName, 260); (_tcsrchr(moduleFileName, _T('\\')))[1] = 0; m_imageFilePath = moduleFileName;//将路径保存在成原创 2017-05-25 15:16:14 · 639 阅读 · 0 评论 -
LPCTSTR的含义
LPCTSTR:LP代表指针、C代表不可改变、T代表根据是否定义UNICODE宏而分别define为char或wchar_t、STR代表字符串。例如:LPCTSTR lp="BMP Files(*.bmp)|*.bmp|任何文件|*.*||"; 在ansi下没问题,但在Unicode下不行。应写为LPCTSTR lp=_T(" ");若字符集原创 2017-05-20 16:14:32 · 9682 阅读 · 0 评论 -
string,wstring,CString
转载自:http://blog.csdn.net/luliyuan/article/details/41083175一.概念 string是C++提供的标准字符串操作类.wstring是操作宽字符串的类. CString是对string(字符串)和wstring(宽字符串)的一个封装,常用在mfc中.用来解决编码问题的.二.转换转载 2017-05-20 16:26:09 · 377 阅读 · 0 评论 -
多字节字符与宽字节字符
转载自:http://blog.csdn.net/langb2014/article/details/52471256?locationNum=2&fps=1char与wchar_t我们知道C++基本数据类型中表示字符的有两种:char、wchar_t。 char叫多字节字符,一个char占一个字节,之所以叫多字节字符是因为它表示一个字时可能是一个字节也可能是多个字节。转载 2017-05-20 16:32:28 · 4972 阅读 · 0 评论 -
字符集(Charcater Set)与字符编码(Encoding)
字符集(Charcater Set或Charset):是一个系统支持的所有抽象字符的集合,也就是一系列字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。常见的字符集有:ASCII字符集、GB2312字符集(主要用于处理中文汉字)、GBK字符集(主要用于处理中文汉字)、Unicode字符集等。字符编码(Character Encoding):是一套法则,使用转载 2017-05-20 16:37:23 · 2026 阅读 · 0 评论 -
C++ 中 \ 的含义
\是行连续的意思,有这个符号,就是下一行是接着上一行的意思,就是下一行和上一行从语法上来说是一行,只是分成了多行来写。例如:#include#include#define STRING "Hello\world\I love U\n"int main(){printf(STRING);}运行结果:Helloworld I love U原创 2017-05-20 16:47:10 · 1901 阅读 · 0 评论 -
获取窗口句柄
转载自 :http://blog.csdn.net/dazhong159/article/details/79033821、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。[html] view plain copy#include W转载 2017-05-22 10:38:48 · 2335 阅读 · 0 评论 -
精确计算代码执行时间
转载自:精确计算代码执行时间精确测量一段代码的执行时间1.LARGE_INTERGER类型LARGE_INTERGER是union类型,用于表示一8个字节的有符号整数,定义如下:typedef union _LARGE_INTERGER{ struct{ DWORD LowPart;转载 2017-06-02 16:53:28 · 376 阅读 · 0 评论 -
图片处理线程异常终止
代码如下:while(true){Hobject checkImage;if(m_imageBuffer.is_not_empty()){m_imageBuffer.pop_back(&checkedImage);OutPutDebugString(_T("获取图片正常");}elsecontinue;...}调试运行的时候,只输出两次"原创 2017-05-31 09:07:30 · 355 阅读 · 0 评论 -
VS2010中创建DLL和(静态)调用DLL
创建DLL 新建indows ConsoleApplication,在“应用程序类型”选项中选择DLL,在“附加选项”中选择空项目,项目名称为CreateDll(自己定义),添加CreateDll.h和CreateDLl.cpp两个文件编译生成DLL文件,这时会在解决方案的Debug文件夹下发现生成的CreateDll.dll和CreateDll.lib文件。转载 2017-06-22 14:50:53 · 486 阅读 · 0 评论 -
C++结构体:默认构造函数,复制构造函数,重载=运算符
转载自:http://blog.csdn.net/fu_zk/article/details/10539705C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数,运算符重载,这些功能使得结构体对象能够方便的传值。比如,我定义一个简单的结构体,然后将其作为vector元素类型,要使用的话,就需要实现上述三个函数,否则就只能用指针了。#include #转载 2017-06-23 13:10:14 · 358 阅读 · 0 评论 -
左值引用(&)和右值引用(&&)
参考[1]:C++——左值引用和右值引用参考[2]:C++11 rvalues and move semantics confusion (return statement)参考[3]:左值引用VS右值引用转载 2017-06-02 11:15:26 · 429 阅读 · 0 评论 -
error C2597: 对非静态成员“CManager::m_moveSpeed”的非法引用
一 、转载自:http://blog.sina.com.cn/s/blog_5d51f4e9010130kl.html静态成员函数相当于全局函数,只是有一个类名字空间的限制。而类成员函数是成员内部的函数,同一个类的对象实例可以有很多,每一个实例都有自已不同的成员变量值,成员函数一般都是对成员自已的成员变量值在操作,所以调用成员函数,必须明确是对哪一个对象实例的操作。静态成员函数原创 2017-05-26 08:49:20 · 10592 阅读 · 0 评论 -
命名方法
一、匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中。 Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯?西蒙尼(Charles Simonyi) 提出的。 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以转载 2017-06-28 15:17:33 · 285 阅读 · 0 评论 -
./和../的作用
./是指当前目录../是指上一层例如:.h文件中包含与父目录位于同一个目录下的其它文件。#include "../tinxml/tinyxml.h"原创 2017-05-15 20:33:44 · 1476 阅读 · 0 评论 -
C++中类的静态数据成员函数解析
转载自:http://blog.csdn.net/zieckey/article/details/1408767静态数据成员:下面看一个例子:#include class Point{public: void output() { } static void init() { } };void main( void ){ Point pt; p转载 2017-05-20 14:42:33 · 230 阅读 · 0 评论 -
两种输出调试信息的方法
1. TRACE例如:TRACE(_T("success"); TRACE(_T("%ld",9999);2. OutputDebugString例如:OutputDebugString(_T("sucess")); Cstring strNum; strNum.format(_T("%ld",9999); OutputDebugString(strNum);原创 2017-06-05 14:54:46 · 548 阅读 · 0 评论 -
对成员变量重新定义
void CProcess::SetCurrentChannel(int currentChannel){ int m_crtChannel=currentChannel; //此处重定义,但编译通过,这样写合法?}class{...public: int m_crtChannel;...}导致的问题是,m_crtChannel的作用域仅限于成员函数SetCurren原创 2017-05-27 08:33:23 · 317 阅读 · 0 评论 -
CString与TCHAR数组 相互转换
转载自:http://blog.sina.com.cn/s/blog_673ccb5b0101412b.htmlTCHAR数组转到CString很简单:使用CString的Format就行。 TCHAR m_buf[100] = _T("Hello"); CString str; str.Format(L"%s",m_buf);CString转为转载 2017-05-25 17:03:26 · 14750 阅读 · 2 评论 -
memset的作用
将所有的参数化成二进制之后填入一个字节,比如说,你第一个赋赋的是一百,转成二进制就是0110 0100,而int有四个字节,也就是说,一个int被赋值之后应该是0110 0100 / 0110 0100/ 0110 0100/ 0110 0100,转成十进制之后就是1,684,300,900,同理,赋1的结果就是 0000 0001/0000 0001/0000 0001/0000 000原创 2017-05-25 18:24:57 · 734 阅读 · 0 评论 -
char 与 string的转换问题
一、 将char* 或char[ ]转换为string可以直接赋值。例如:string a;char* b1=“char”;char b2[]="char";a=b1;a=b2;二、将string转换为char*或者char[]string是c++标准库中的字符类,其封装了对字符串的常用操作。一般调用string类的c_str 函数完成。例如:strin原创 2017-05-26 09:32:37 · 554 阅读 · 0 评论 -
类的两种实例化方法
转载自: http://blog.csdn.net/wujiangguizhen/article/details/30504777A a;A * a = new a();以上两种方式皆可实现类的实例化,有new的区别在于:1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。2.不加new在堆栈中分配转载 2017-05-26 11:13:30 · 5771 阅读 · 0 评论 -
内存管理
下面的几篇博文很赞。要好好看看1. [学习C++]内存管理2. c++五种内存分配、堆与栈区别C++ 内存池转载 2017-05-26 11:21:36 · 192 阅读 · 0 评论 -
取址符的作用
int a;int b = &a; a、b指向同一个内存地址,对a的操作等同于对b的操作。int a; int *b = &a; b中储存的是a的地址。对(*b)的任何操作相当于对a的操作转载 2017-05-18 15:49:44 · 4404 阅读 · 2 评论 -
volatile
volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.典型应用:多线程编程while循环中。volatile unsigned int m_exit; while(!m_exit) { if(m_exitFlag) break;//跳出while循环 if(m_dictRej原创 2017-05-27 17:53:29 · 159 阅读 · 0 评论 -
include和class+类名的区别
#include "xx.h" 在编译的时候把xx.h文件直接展开,所以里面的接口都能用,可以申明对象。但是classxx;这种方式就不会,你只能使用它的指针或者引用,你不能创建对象。http://www.cnblogs.com/ORC-Lee/p/4848220.html假设B的定义是在B.h中,而存在下面这个文件:// A.h----------------原创 2017-05-06 09:37:23 · 418 阅读 · 0 评论 -
class CProcess的使用
由于相机类中会使用CProcess m_process。CProcess的声明在process.h中,这个时候没有必要#include "process.h",只要在头文件中加入class CProcess就可以了。这样编译器会自己在其它的文件中找CProcess的声明。原创 2017-05-18 16:38:43 · 817 阅读 · 0 评论 -
类模板
转载自:http://www.jizhuomi.com/software/55.html什么是类模板呢?类模板就是为类声明一种模板,使得类中的某些数据成员,或某些成员函数的参数,又或者是某些成员函数的返回值可以取任意的数据类型,包括基本数据类型和自定义数据类型。类模板的声明形式如下: template 类声明模板参数表中为:转载 2017-05-18 13:34:49 · 236 阅读 · 0 评论 -
BOOL和bool的区别
一、1、类型不同BOOL为int型bool为布尔型2、长度不同bool只有一个字节BOOL长度视实际环境来定,一般可认为是4个字节3、取值不同bool取值false和true,是0和1的区别BOOL取值FALSE和TRUE,是0和非0的区别二:bool是标准C++数据类型,可取值true和false。单独占一个字节,如果数个bool对象列转载 2017-05-17 14:43:32 · 1306 阅读 · 0 评论 -
C++常用的延时方法
(—)使用_sleep()函数 #include using namespace std; _sleep(5*1000);//延时5秒 (二)使用Delay(int time)函数 #include void Delay(int time)//time*1000为秒数 { clock_t now = clock转载 2017-05-11 10:04:12 · 18632 阅读 · 1 评论 -
类的构造函数
转载自:http://blog.csdn.net/tiantang46800/article/details/6938762一、 构造函数是干什么的class Counter{public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Counter()转载 2017-05-18 19:41:49 · 222 阅读 · 0 评论 -
CXX0017:错误;没有找到index符号
问题描述:debug下,添加变量监视,变量显示异常。提示 CXX0017:错误;没有找到index符号。原创 2017-05-26 19:59:12 · 894 阅读 · 0 评论 -
调试中出现的问题(一)
之间的代码是:...TCHAR moduleFileName[260]; ::GetModuleFileName(NULL,moduleFileName, 260);(_tcsrchr(moduleFileName, _T('\\')))[1] = 0;m_moduleFileName=moduleFileName;//m_moduleFileName为类的私有变量,但是提示,这是原创 2017-05-25 16:38:01 · 380 阅读 · 0 评论 -
请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配
转载自:http://blog.csdn.net/xfz0330/article/details/51477769在c#中引入c++生成的dll,出现了如下问题:对 PInvoke 函数“GAProject!GAProject.Form1::Add”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管转载 2018-01-17 15:34:52 · 885 阅读 · 0 评论