随笔分类 - C++
摘要:void CPCBGUIView::OnDraw(CDC* pDC){//CPCBGUIDoc* pDoc = GetDocument();//ASSERT_VALID(pDoc);//if (!pDoc)//return;CDC m_pMemDC;CBitmap m_pBitmap;CRect rect;GetClientRect(rect);int x=rect.Width();int y=rect.Height();m_pMemDC.CreateCompatibleDC(pDC);m_pBitmap.CreateCompatibleBitmap(pDC,x,y);m_pMemDC.Sel
阅读全文
摘要:_T("Hello")是一个宏,他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。 如果你编译一个程序为ANSI方式,_T实际不起任何作用。而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。_T和_L的区别在于,_L
阅读全文
摘要:1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。 快速插入Key - Value 记录。 快速删除记录 根据Key 修改value记录。 遍历所有记录。 3、使用map使用map得包含map类所在的头文件#include <m
阅读全文
摘要:vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分 ,为了使用vector 我们必须包含相关的头文件 :#include <vector>使用vector有两种不同的形式,即所谓的数组习惯和 STL习惯。一、数组习惯用法1. 定义一个已知长度的 vector :vector< int > ivec( 10 ); //类似数组定义int ia[ 10 ]; 可以通过ivec[索引号] 来访问元素使用 if ( ivec.empty() ) 判断是否是空,ivec.size()判断元素个数。2. vecto
阅读全文
摘要:揭开 C++ 编译器的面纱,你将会发现引用通常情况下是以指针的形式实现的,所以通过引用传递通常意味着实际上是在传递一个指针。因此,如果传递一个内建数据类型的对象(比如 int ),传值会比传递引用更为高效。那么,对于内建数据类型,当你在传值和传递常量引用之间徘徊时,传值方式不失为一个更好的选择。迭代器 和 STL 中的函数对象都是如此,这是因为它们设计的初衷就是更适于传值,这是 C++ 的惯例。实现迭代器和函数对象的人员有责任考虑复制时的效率问题和截断问题。(这就是一个“使用哪种规则,取决于当前使用哪一部份的 C++ ”,参见第 1 条)内建数据类型体积较小,所以一些人得出这样的结论:所有体积
阅读全文
摘要:C/C++获取当前系统时间//方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include <time.h> #include <stdio.h> int main( void ) { time_t t = time(0); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) ); puts( tmp ); return 0; }size_t strftime(char *strDest, size_t maxsize, c
阅读全文
摘要://------------------------------------- //功能:C++ int 转 string (使用stringstream) //------------------------------------- #include "stdafx.h" #include <iostream> #include <string> #include <sstream> using namespace std; int main() { stringstream strStream; int a = 100; float
阅读全文
摘要:C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结<引用>一,C语言的字符串在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。比如下面这个例子://example 1:char str[12] = "Hello";char *p = str;*p = 'h'; //改变第一个字母//example 2:char *ptr =
阅读全文
摘要:实现string 的去除两边空格,按指定字符截取,替换#include <iostream>#include <vector>using namespace std;namespace strtool{string trim(const string& str){ string::size_type pos = str.find_first_not_of(' '); if (pos == string::npos) { return str; } string::size_type pos2 = str.find_last_not_of('
阅读全文
摘要:1.CString 转 int CString strtemp = "100"; int intResult; intResult= atoi(strtemp); ----------------------------------------------------------------- 2 int 转 CString CString strtemp; int i = 2334; strtemp.Format("%d",i);
阅读全文
摘要:/* * 函数名: CString2Char * 参数1: CString str 待转换字符串 * 参数2: char ch[] 转换后将要储存的位置 * 将Unicode下的CString转换为char* */ void CString2Char(CString str, char ch[]) { int i; char *tmpch; int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度 tmpch = new char[wLen + 1]; //分配变量的地...
阅读全文
摘要:一.添加数据 m_listbox.AddString("fadsfasdfsdaf");二.计算数据条数 m_listbox.GetCount();三.清空列表框 m_listbox.ResetContent();四、修改背景颜色及字体颜色① 先创建一个基于对话框的工程,命名为test,然后在对话框上加入一个ListBox控件。② 在testDlg.h中加入一个成员变量:HBRUSH m_hbrush;③ 在OnInitDialog()中,加入m_hbrush=CreateSolidBrush(RGB(0,0,0);此处设置的RGB值可以改变ListBox的背景色。 为了观
阅读全文
摘要:class CAgent {public:CAgent();virtual ~CAgent();};注:CAgent不可继承MFC类*.h文件中#include <map>#include <string>using namespace std;#include "Agent.h"*.cpp 文件中map<string,CAgent> AgentList;string s="1001";CAgentagent1;AgentList.insert(make_pair(s,agent1));
阅读全文
摘要:什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了。让我们先来看看SetTimer函数的原型: UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD)) 当使用SetTimer函数的时候,就会生成一个计时器。函数中nIDEvent指的是计时器的标识,也就是名字。nElapse指的是时间间隔,也就是每隔多长时间触发一次事件。第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以
阅读全文
摘要:CString str;str.Format("Great game! You have $ %.2f left.", m_Amt_Remaining);),上VC6中上述代码没有问题,但在Visual stdio 2008中编译中有错误:错误提示:error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [10]”转换为“const wchar_t *”VS2008默认是UNICODE环境所以把你所有字符
阅读全文
摘要:Vc6.0直接可以在CView类添加消息响应;右键点CView类添加事件。在Vc2008中没找到这种功能,但可以用下面两种方式实现。方案一:自动右击CTextView类,选属性。在属性视图的工具栏中,有“事件”和“消息”,还有“重写”。事件就是命令事件,消息就是控件消息,重写就是重载虚函数。点击消息就可选择**消息响应-->添加 即可自动生成。方案二:手动以添加OnLButtonDown()消息为例,添加过程如下1.右键点击CView选Add Function。 设置函数原型为Void OnLButtonDown(UINT nFlags,CPoint point);2 在CView头文件
阅读全文
摘要:刚开始学习C++,写个学习笔记。mvc中的timer应用,基于对话框的程序CmyClockDlg.h 头文件CmyClockDlg.cpp 类文件BOOL CmyClockDlg::OnInitDialog(){ //设置定时器 SetTimer(100, 50,NULL); //SetTimer( 100, 50, TimerProc );//如果第三个参数中指定一个函数名称,则定时器不会触发WM_TIMER消息,而是调用指定函数}
阅读全文
摘要:错误5fatal error LNK1104: 无法打开文件“..\..\..\..\api\vc6.0\lib\shp_a3.lib”解决方案:程序设置了链接包含 shp_a3.lib 这个文件 但是 目录或文件名不对.编译当然就通不过了方法一:看看 工程属性 --> 链接 --> 输入 --> 附加依赖项 ......方法二: 把这个文件复制到 你的工程目录下,然后在stdafx.h的最后加上 #pragma comment(lib , "shp_a3.lib"); 就可以了
阅读全文
摘要:现象:win32程序,运行时弹出对话框: “没有找到MSVCR90D.dll,因此这个应用程序未能启动,重新安装应用程序可能修复此问题”解决: 网上一人说是微软BUG,具体原因不清楚。 如果把项目放在FAT32分区,那么这样操作:方案一: 英文版:Project Properties -> Manifest Tool-> Use FAT32 Work-around -->Yes 中文版:项目-->项目属性-->配置属性-->清单工具-->使用 FAT32解决方法-->是 然后右击项目-->清理(clean)下,然后重新生成项目(Rebuil
阅读全文