- 博客(41)
- 资源 (5)
- 收藏
- 关注
原创 C/C++经典题解析
以下题目都是来时何海涛博客的 C/C++/C#面试题精选 系列,感谢博主的整理。这些题不仅帮助我通过一些笔试,更重要的是帮助我很好的理解C/C++。以前很讨厌这些题,现在想来做些题还是很有用的,至少可以帮助你巩固知识加深理解。为支持博主的原创,我附上文章的连接地址 点击打开链接。在阅读中发现博主解释的还不够详细,为了能够更好的帮助网友,同时也帮助自己梳理一下知识,我重新整理了一下。
2014-01-13 22:17:25
1536
1
原创 使用C++实现一款Windows平台上的小型FTP服务器
学习了Windows平台上的网络编程以后,一次网络实验课学习使用Server-U建立FTP站点。对于网络上的文件传输产生了兴趣,那时就想着自己也实现一款小型的FTP服务器,一遍自己能提高自己的时间能力。这学期通过3个月的研究学习和编码测试,总算是实现了自己心中的那款FTP服务器,心里的那块石头总算放下来了。算是为即将离开学校的我画上一个句号吧。为了方便有相同兴趣的网友一起学习和提过,我把源码整理发布了出来,欢迎下载学习,让我们共同交流提高自己。您如果感觉哪里需要改进的欢迎联系我,我们共同来把它完善起
2013-12-30 21:30:19
8093
2
原创 使用MFC串行化保存程序数据
最近在写一个基于MFC对话框的小软件,软件中需要把一些用户的信息存放到一个数据文件中,需要时再取出来。想到以前学习MFC时有学过文档和串行化,于是就打算使用串行化来做。当然用其它方法也是可以的。这里只是为了学习!CArchive 对象提供了一个类型安全缓冲机制,用于将可序列化对象写入 CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁盘文件;但是,它也可以是表示“剪贴板”的内
2013-12-28 21:35:53
3775
原创 VC++6.0实现真彩工具条
最近在用VC++6.0做一个毕业设计,想要实现一个24bit位图真彩的工具条。经过努力,花了5个多小时(太笨了!),总算是把它给搞了出来。做了一个Demo运行截图如下:鼠标放到工具栏按钮上时会高亮显示,图中对话框是我点击了第一个按钮弹出的对话框,用作测试!下面就带你一步步的实现这个酷酷的工具栏VC++6.0直接支持256色工具栏的编辑和使用,若想建立真彩(24位位图)工具栏
2013-12-20 21:48:34
3320
原创 MFC中如何将应用程序的配置信息保存到注册表中(二)
在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法。这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态。在上一篇添加的代码的基础上,要添加WM_CLOSE消息的响应函数,因为我们只有在窗口关闭前要保存窗口的位置信息,所以保存窗口位置到注册表的代码要写在这个消息处理函数。代码如下:void CTestClassDlg::OnClose() {
2013-12-19 19:59:42
2913
原创 MFC中如何将应用程序的配置信息保存到注册表中(一)
注册表(Registry,繁体中文版Windows称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。比如我们打开一个记事本,调整其窗口大小,使用完毕后关闭记事本,下次打开时大小和上次关闭前的大小和在屏幕上的位置是相同。这些位置和大小信息就是在记事本关闭时保存到注册表中,下次打开时我们从注册表中取出这些数据,并按照这些数据显示记事本程序的大小和
2013-12-19 19:08:12
5377
原创 洗牌算法
最近看到一个题是这样的实现一个算法: 将一副54张扑克牌经过洗牌后顺序发给三个人,然后将每个人的牌按降序排序。自己实现了一下,代码如下:Card.h#ifndef CARD_H#define CARD_H#include using namespace std;//扑克牌类class Card{public: int suit; //花色 int rank;
2013-12-08 18:07:11
968
原创 按固定格式输入一个日期:比如2012-02-02,输出他是本年的第几天,周几
这是一个很常见的问题,因同学问我该怎样实现。今天闲来无事,就实现了一下。算法很简单,很适合作为C/C++的基础训练题。//判断是不是闰年bool IsLeapYear(int nYear){ if(nYear <= 0) exit(0); if((nYear%4 == 0 && nYear%100 != 0) || (nYear%400 == 0)) return
2013-12-08 16:34:39
1126
原创 让ListBox控件每一行显示不同的颜色
最近用MFC做个小项目,想要让ListBox中的每一行都根据自定义的颜色来显示不同的颜色。刚开始把MFC想的太简单了,拖了一个ListBox控件然后绑定了一个变量m_ListBox。在主对话框的OnInitDialog()函数中我调用了下面的代码m_ListBox.AddString(_T("这是一个小测试!"));m_ListBox.SetItemData(0,RGB(0,0,255)
2013-12-03 14:47:16
12843
1
原创 编程知识整理
在这里对学习过程中遇到的问题做一个简单的整理,方便以后查阅。10:09 AM 10/4/2013统计一段程序运行的时间可以用这段程序#includeclock_t begin = clock(); //放在程序的开头clock_t end = clock(); //放在程序的结尾cout 7:09 PM 10/5/2013volatile的作用volati
2013-12-02 17:25:06
857
原创 一个很精彩的关于STL的例程
下面是C++ primer上关于STL的一个完整的历程,程序的目的在于统计需要查找的一个英文单词在一个英文文本文件中出现多少次,以及输有要查找单词出现的那一行。下面的程序可以帮助你使用STL时有一个更便捷的参考,在彻底弄清楚下面的程序后你完全可以改写一下,统计出一个英文文本中每个单词出现的次数。这样你就可以根据这个结果查找那些不会的单词,重点查一下词典,这样应该能更好的去阅读一篇英文文章。
2013-12-01 16:53:14
957
原创 关于WM_PAINT消息中只重绘无效区的问题
一直以来我都有一个疑问,那就是下面代码中 case WM_PAINT : hdc = BeginPaint (hwnd, &ps); ............... EndPaint (hwnd, &ps) ; return 0 ;其中的BeginPaint(hwnd,&ps)通过ps结构体中的一个矩形结构体变量标识的无效区来重绘
2013-11-21 15:17:44
3014
原创 Win32窗口的生与死
对windows的消息种类及发生时机是win32程序设计的关键所在,这篇依然可以帮助初学者深入理解消息的发生时机。下面是以窗口的诞生和死亡,说明消息的发生和传递,以及应用程序的兴起和结束。(本文图片来自侯捷的《深入浅出MFC》一书,本文只是简单的拿来方便自己以后的复习,想要深入的了解请参见侯先生的书籍)下面是上图的对照解释,看完让人了然清晰了许多!
2013-11-21 14:31:04
979
原创 GDI编程基础总结
所谓GDI就是图形设备接口(Graphics Device Interface)的英文缩写。负责在显示器和打印机上显示图形 。Windows给我们展现的丰富的图形界面都是靠GDI接口函数来实现,如果我们想在窗口上画一条线,贴上一张图都需要通过图形设备接口来实现。所以说系统和用户完成图形元素的显示都是调用的同一套接口。在打印机上显示图形对于身为学生的我们还难以有实践机会,而在显示器和打印机上显示
2013-11-19 21:24:56
1265
原创 深入理解win32消息机制
想要学习win32程序设计,消息机制必须深刻的理解的。这是所有win32程序的基石。下面只是我学习和复习过程中的笔记加上自己的总结,谈不上原创。只为方便他人学习,也为方便自己复习。一图胜千言,下面是截取侯捷的《深入浅出MFC》一书的一张图,画的很是通俗易懂,所以就直接粘了过来。关于这幅图的解释:首先是鼠标,键盘这些输入设备通过各自的驱动程序把消息传送给操作系统,
2013-11-19 15:53:34
2176
原创 尽量以new和delete取代malloc和free
记得一次面试被问到new和malloc的区别,答曰:new是一个操作符,malloc是一个函数。面试官曰:也就是没有区别是吧!晕,难道我说的不是区别吗?看来我没有说到他想听到的东西。也罢,平常书读的少了,思考的也不多,对这些问题总是说不到本质上去。所以励志读遍IT界的大牛神书,多多的思考,多多的实践!malloc和free是C语言中提供我们用于堆内存分配的库函数,那时还没有C++的构造函数,析
2013-11-04 18:40:12
985
原创 尽量以<iostream>取代<stdio.h>
在包含的scanf和printf及其家族虽然是可移植的,高效的,但它们都还不够完美。尤其是它们不具型别安全(type-safe)性质,也都不可扩充。由于型别安全性和扩充性正是C++的基石,所以printf/scanf的弱点正是operator > 的长处:int i;Rational r; //r是一个分数(rational number).........cin >> i >>
2013-11-03 14:00:12
2108
原创 总有一天我会绽放属于自己的光彩
今天无意中逛到poem浅墨的博客看到了这么一段话,深有感触。就把它给粘了过来,走的累的时候,灰心丧气的时候,迷茫的时候,感觉现实很现实的时候看一看,也许能平复内心的落寞!!!! 总有一天你将破蛹而出,成长得比人们期待的还要美丽。但这个过程会很痛,会很辛苦,有时候还会觉得灰心。面对着汹涌而来的现实,觉得自
2013-11-02 19:19:27
1590
原创 尽量以const和inline取代#define
#define是属于预处理器指令的,在Effective C++中提到的条款1的标题如果改为“尽量以编译器(compiler)取代预处理器(preprocessor)”或许更好,因为#define通常不被视为语言本身的一部分。何为预处理器?预处理器是编译器把C++代码编译为机器指令之前执行的一个过程,所有的预处理器都是#开头,以便与C++语句区分开来。何为#define指令?该指令
2013-11-02 15:06:28
1073
原创 面试中常见的C/C++问题集锦
下面的问题均是自己在面试中实际遇到的,而且在准备面试的过程中也是网上讨论的很多的面试题。本着人人为我,我为人人的互联网精神,特进行一下简单的整理,方便以后的求职复习,也方便他人进行复习。下面的总结来源于网络加上自己的理解,深刻的理解下面的问题对自己的C/C++技术修为是很有好处的,不仅仅是应对面试。想要理解的更深刻还是要多去读那些经典的C和C++书籍,如《C++ primer》 《Effect
2013-10-30 19:05:53
1496
原创 socket编程之实战练习
对于使用socket进行网络编程说起来还是有规律可循的,弄懂了其模式流程,你感觉也就是那个样。学习socket网络编程时弄通几个小例程对以后的学习是有很大的帮助的。下面给出流式套接字的编程流程:先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后
2013-10-05 16:36:13
1152
原创 socket编程之基础学习
在面试中如果你说你会网络编程,那么面试官肯定会问你socket编程相关的问题。比如让你写一个基于TCP或UDP的socket编程的C/S模型,让你解释socket存在于哪里,更深入一点的还会问你accept()函数返回发生在什么时候(TCP三次握手建立连接之后)等等。有的也会直接在笔试中出现,总之理解掌握socket编程的流程和内部的基本原理无论对于我们实际的项目开发和面试都是很有必要的。在lin
2013-10-05 15:30:29
1163
原创 二叉树遍历的递归和非递归算法
二叉树的遍历(包括先序遍历,中序遍历,后续遍历,层序遍历)也是在面试和笔试中常遇到的问题。下面给出二叉树几种遍历方法的递归和非递归的写法。程序只是想着写出来了,但是没有用typedef struct BiTNode{ int m_nData; struct BiTNode *m_pLchild,*m_pRchild;}BiTNode,*BiTree;//二叉树先序遍历的递
2013-10-04 21:45:05
1296
原创 面试中常考的现场写程序题目
在面试中面试官常常让我们写几个小的程序,以此来考察我们的编程内功。所以在准备面试的过程中在纸上练习着写一些程序是很有必要的。下面是在面试中常考的几个题,出现频率非常之高!!!!1、完整正确的写出二分查找的算法int binary_search(int arr[],int n,int key){ assert(arr!=NULL && n>0);//注意断言的作用 int le
2013-10-04 15:02:09
7036
1
原创 位运算要点总结
下面是小米公司2013校园招聘笔试题的一道选择题的第3题参见Hackbuteer1的这篇博客http://blog.youkuaiyun.com/hackbuteer1/article/details/8484974 2013年小米校园招聘笔试题3.运算(93&-8)的结果为: 88具体运算过程如下:93 : 0x005D 0000 0000 0101 110
2013-10-04 13:35:28
997
原创 小米2013校园招聘笔试题的第一道程序设计题
1、数组乘积(15分)输入:一个长度为n的整数数组input输出:一个长度为n的整数数组result,满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出)。比如输入:input = {2,3,4,5},输出result = {60,40,30,24}程序时间和空间复杂度越小越好。C/C++:int *cal(int* input ,
2013-10-04 12:28:53
948
原创 用字符串表示大整数
输入一串数字,如:5676561321;要求输出带逗号分隔的:5,676,561,321方法一:#include using namespace std;int main(){ int i=0,array[50]={0},n,j; cin>>n; while(n>0) { array[i++]=n%100
2013-05-05 18:05:07
2187
转载 IP地址分类
IP地址被分为几类?不同类别各自的应用在哪里? IP协议的定义、IP地址的分类及特点 什么是IP协议,IP地址如何表示,分为几类,各有什么特点? 为了便于寻址和层次化地构造网络,IP地址被分为A、B、C、D、E五类,商业应 用中只用到A、B、C三类。 IP协议(Internet Protocol)又称互联网协议,是支持网间互连的数据报协议, 它与T
2013-05-01 21:31:26
1155
转载 KMP字符串模式匹配详解
刚看到位兄弟也贴了份KMP算法说明,但本人觉得说的不是很详细,当初我在看这个算法的时候也看的头晕昏昏的,我贴的这份也是网上找的。且听详细分解:KMP字符串模式匹配详解来自优快云 A_B_C_ABC 网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。
2013-04-22 19:27:20
502
转载 要有自己的核心竞争力
马云:写给工厂上班的大学生们或许你现在背井离乡,生活过的马马虎虎,拿着2-3千的工资,有电视看有电脑玩,这就够了,但是未来在哪里?下面的话请耐心看完,也许会对你有一些的帮助!!每年,制造业都会吸纳很大一部分大学毕业生,在这些职场新人庆幸找到工作,对未来充满憧憬的时候,他们的前辈——已在制造业内打拼了几年的师兄师姐们——却怀着深深的忧虑,他们不知道未来会怎样?他们不知道何时会被抛弃?
2013-04-22 16:29:19
807
原创 MFC程序任务栏托盘图标的实现
1.首先自定义函数//添加任务栏托盘图标,Tray托盘BOOL CChatRoomDlg::TrayMyIcon(BOOL bAdd)//bAdd为TRUE就添加,bAdd为FALSE就不添加。{ BOOL bRet = FALSE; NOTIFYICONDATA tnd; tnd.cbSize = sizeof(NOTIFYICONDATA);
2013-04-21 13:49:46
1939
3
转载 error C2784: 'bool std::operator <(const std::_Tre
Error 42 error C2784: 'bool std::operator &,const std::_Tree &)' : could not deduce template argument for 'const std::_Tree &' from 'const std::string' d:\program files_x86\microsoft visual studio 9.
2013-03-18 21:59:43
4322
原创 定制应用程序外观
本节主要学习了1. 修改MFC AppWizard向导生成的框架程序外观和大小,这既可以在窗口创建之前,也可以在窗口创建之后进行。2. 修改程序窗口的图标,光标,背景的方法。在创建窗口之前,通过设计窗口类来修改程序窗口的图标,光标,背景;在窗口创建之后,通过SetClassLong函数修改窗口的图标,光标和背景。3. 实现一个动态变化的图标的例子。4.
2012-09-26 21:23:09
669
原创 对话框编程(一)
这一节学习了对话框用户界面程序的编写,包括1. 想对话框控件关联数据成员及其实现机理。2. 向对话框控件关联控件类。3. 利用对话框类的成员函数向控件发送消息和截获对话框控件对象。4. 直接利用对话框控件类操纵对话框控件(发送消息和直接调用成员函数)。5. 在程序运行时产生和销毁控件。6. 对话框控件的几种访问方式
2012-09-21 17:35:30
893
原创 MFC有关菜单的编程实现
本节学习了菜单编程方面的内容,包括静态菜单操作和动态菜单操作两大块。静态菜单操作包括标记菜单,默认菜单,图形菜单的实现原理及具体实现,快捷弹出菜单的实现方式及其命令响应函数的添加。动态菜单操作主要包括:如何让程序运行时产生新的子菜单和菜单项,以及如何手工地为这些新产生的菜单项命令添加消息响应处理函数。本节还实现了如何在顶层窗口,即框架类窗口中截获对菜单命令的处理。通过这节还应该了解
2012-09-18 20:36:38
1078
原创 文本编程
如何在客户区显示文本以及如何添加字符串资源。理解路径层的作用。 void CTextView::OnDraw(CDC* pDC) //响应WM_PAINT消息的函数{ CTextDoc*pDoc = GetDocument(); ASSERT_VALID(pDoc); //TODO: add draw code for nativ
2012-09-11 21:10:29
656
原创 MFC之简单绘图
在VC++中如何通过消息映射机制,用Win32 SDK,CDC类,CClientDC类,CWindowDC类实现绘图操作void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call default//MessageBo
2012-09-10 21:43:31
716
原创 浅谈MFC
API:Application Program InterfaceWindows操作系统留给了我们两种接口,一种是用户接口(例如我们桌面的图标,可以方便用户取得系统的服务)。另一种是程序接口(通过一个个的API函数来实现和操作系统的交互)主要是面向程序员。MFC:Microsoft Foundtion ClassMFC是微软把大部分的API函数给我们封装了,更方便我们编程。体验过Win
2012-07-15 10:57:43
586
原创 C++重点知识回顾
一.C++的标准输入输出流 C++中提供了一套输入输出流类的对象,它们是cin 、cout和cerr,对应c语言中的三个文件指针stdin、stdout、stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。cin与>>一起完成输入操作,cout、cerr与比C语言中的scanf和printf要方便得多,cin和cout可以自动判别输入输出数据类型而自动调整输入输出格
2012-07-14 09:11:00
790
C++实现的FTP服务器
2013-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人