C/C++
文章平均质量分 73
罗罗CS
这个作者很懒,什么都没留下…
展开
-
关于OpenFileDialog在MFC和OPENFILENAME在win32中的使用
大多数windows运用程序都需要处理文件中的数据,所以需要一个接口打开和保存文件;比如,我们经常使用的word,可以看到非常标准的打开对话框,windows已经帮我们提供了很好的接口,我们会使用就好,我们主要介绍两种: 1,win32环境的api风格,代码如下: OPENFILENAME ofn; TCHAR szFileName[MAX_PATH] = _原创 2013-07-07 22:27:37 · 6599 阅读 · 0 评论 -
typedef 与 #define的区别
typedef和#define的用法与区别 一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可以增转载 2014-02-23 20:02:13 · 773 阅读 · 0 评论 -
C++ new一次,delete多次探讨
《问题》危险的代码: int* p=new int(1); delete p; delete p; 探讨一: 连续两次对同一个指针delete ,会造成严重的错误。编译器会检测出这样的错误吗?或许一些编译器会的,但别太过指望编译器。 探讨二: 第一次delete后,p自动为空(NULL)了吗?不是的。转载 2014-02-23 20:16:33 · 11232 阅读 · 1 评论 -
单件模式的C++实现
单件模式是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享时的程序设计方法(根据实际情况,可能需要几个类实例)。在某些情况下,这种程序设计方法是很有用处的。Singleton模式的实现基于两个要点:1)不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance。Public保证了它的全局可见性,静原创 2014-02-26 21:16:16 · 2708 阅读 · 0 评论 -
C++检测内存泄露
转载地址:http://blog.csdn.net/yysdsyl/article/details/4033986 C++程序的复杂性很大一部分在于他的内存管理,没有C#那样的垃圾回收机制,内存管理对初学者来说很困难。经常会出现内存泄露的情况。那么我们写程序如何避免内存泄露呢?首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。 本文描转载 2014-02-17 15:36:14 · 797 阅读 · 0 评论 -
字符串(char*)转化为int
一个精简版本:#include int my_atoi(const char* p){ assert(p != NULL); bool neg_flag = false;// 符号标记 int res = 0;// 结果 if(p[0] == '+' || p[0] == '-') neg_flag = (*p++ != '+'); while(isdigit(*p)) re原创 2014-02-24 21:24:22 · 1605 阅读 · 0 评论 -
如何直接访问类的私有成员?
Adobe的一道笔试题: class mystring{public: mystring(const string &str, const int count) { m_str = str; m_count = count; } private: string m_str; int m_count;};问,如何在不修改mystring类的任何代码的情况下原创 2014-03-10 10:57:42 · 2956 阅读 · 0 评论 -
C++中各种不同的new和delete
前言:众所周知,C++中的操作符new和delete是用来动态分配内存初始化对象和手动回收内存析构对象的。但这只是最基本最常用的用法。new和delete其实还有更内涵的东西。1 区分各种不同的newnew操作符其实分为三种:newoperator ,operator new ,以及placement new。 1.1 new operator 当我们写出这样的代码:转载 2014-02-23 20:19:56 · 904 阅读 · 0 评论 -
迭代器失效场合
转载: http://blog.csdn.net/jfkidear/article/details/7287568一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串非标准关联容器hash_se转载 2014-03-26 14:27:33 · 696 阅读 · 0 评论 -
整数划分问题
转载出处:http://www.cppblog.com/superKiki/archive/2010/05/27/116506.aspx转载 2014-04-18 10:34:28 · 1463 阅读 · 0 评论 -
C语言运算符优先级
一共有十五个优先级: 1 () [] . ->2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof 3 * / %4 + - 5 >> 6 > >= 7 == != 8 & 9 ^ 10 |转载 2014-02-23 10:56:07 · 682 阅读 · 0 评论 -
C++(虚)继承类的内存占用大小
首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。计算一个类对象的大小时的规律:1、空类、单一继承的空类、多重继承的空类所占空间大小为:1(字节,下同);2、一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的;3、因此一个对象的大小转载 2014-02-21 16:55:40 · 1776 阅读 · 0 评论 -
求素数的优化算法
1. 根据概念判断:如果一个正整数只有两个因子, 1和p,则称p为素数.代码:bool isPrime(int n){ if(n < 2) return false; for(int i = 2; i < n; ++i) if(n%i == 0) return false; return true;}时间复杂度O(n).转载 2013-08-17 14:57:28 · 1590 阅读 · 0 评论 -
gdi+设置图像的透明度
有时候,我们需要不同透明度的图片,使用GDI+可以简单快速做到这一点,今天总结下,把代码贴出来,是基于VS2008开发的。 #include "stdafx.h"#include #include #include using namespace Gdiplus;using namespace std;#pragma comment(lib,"gdiplus.lib")i原创 2013-07-10 20:02:59 · 4242 阅读 · 0 评论 -
关于ASCII ,DBCS,UNICODE编码及字符串类型总结
最近因为项目需求,在windows平台下总是碰到一些关于字符串类型的变换,吃了不少苦头,索性花了这个晚上来整理下有关字节的知识,碰到的困难以及自己的一些解决方案。一,字符的基础 ASCII ,DBCS( MBCS ) ,UNICODE1.1,ASCII码( SBCS ) ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础原创 2013-06-19 21:56:17 · 3216 阅读 · 0 评论 -
Unicode 多字节 utf-8互转
BOOL achr2wchr( const char *src, wchar_t *dst, int dst_len ){ size_t len = strlen(src); size_t wlen = MultiByteToWideChar(CP_ACP, 0, (const char*)src, int(len), NULL, 0); if (wlen > dst_len) {转载 2013-07-13 17:04:20 · 1013 阅读 · 0 评论 -
多字节字符串与宽字节字符串的相互转化
我们有时在程序设计中,可能需要多字节字符串和宽字节字符串之间进行相互的转化,一般来说有两种API; 一,C API: mbstowcs,wcstombs; 示例程序如下: #include #include //wchar转化为charchar* wcharTochar(wchar_t *src){ int len=wcslen(src); char *原创 2013-06-24 20:01:37 · 1309 阅读 · 0 评论 -
C++内存管理总结系列一
欢迎进入内存这片雷区。伟大的 Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯转载 2013-07-15 15:59:51 · 1053 阅读 · 0 评论 -
VC++ warning C4786 详解
在使用std::vector的过程中,编译器报了如下的warning: c:/program files/vc98/include/vector(61) : warning C4786: '??0?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_s转载 2013-07-04 08:51:13 · 1055 阅读 · 0 评论 -
string.h cstring string的关系
1、是C标准库中的字符串处理函数的头文件 如strcmp strcat 等等函数2、是与C标准库的相对应的,但被加入到std名字空间的版本。 cstring是C++的组成部分,它可以说是把C的string.h的升级版,但它不是C的组成部分。 所以如果你用的是C++,那么请用cstring,如果你用的是C请用string.h。3、和 st转载 2013-08-09 10:49:56 · 1065 阅读 · 0 评论 -
C++中size_t与size_type的小结
标准定义中,size_t和size_type被定义为unsigned int。但是sizt_t是C++的一个标准的typedef,全局有效,定义在全局名称空间中size_type是STL定义的,size_t不是容器概念,而size_type是容器概念,没有容器不能使用。 size_t的引入增强了程序在不同平台上的可移植性。经测试发现,在32位系统中size_t是4字节的,而原创 2013-08-12 10:53:55 · 5235 阅读 · 1 评论 -
有关int,float,double型与字符串char*类型的相互转换
atoi、atof、itoa、itow函数是windows平台下实现字符串与数值相互转换的函数; 下面看下这几个函数的声明: 1,atoi 原型: int atoi ( const char * str ); 作用:将字符串转为int型; 2,atof 原型: double原创 2013-08-11 23:35:04 · 6870 阅读 · 0 评论 -
全排列以及集合的子集
全排列:#include #include #include #define N 200char str[N];char ret[N];int used[N];int len;void dfs(int cnt){ if (cnt == len) { puts(ret); return; } for (int i=0; i<len; ++i )原创 2014-09-12 15:28:49 · 1194 阅读 · 0 评论