c++编程
文章平均质量分 52
zhanglidn013
这个作者很懒,什么都没留下…
展开
-
将一个数组分割为多个连续的子数组
例子: 比如,数组中的数据为:[1,2,3,5,6,8,9,10,12,13,14] 可将数组分割为:[1,2,3]、[5、6]、[8,9,10]、[12,13,14] 四个数组vector<vector<U32>> findconsecutivesubarrays(vector<U32> vec){ vector<vector<U32>> antarrays; int nlen = vec.si...原创 2021-05-17 09:37:00 · 2011 阅读 · 0 评论 -
二叉树中第二小的节点(C语言)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ int Traver(int value, struct TreeNode* root) { if (root == NULL) { return -1; .原创 2021-04-07 13:32:03 · 125 阅读 · 0 评论 -
两个N进制100位字符串相减的问题
#include "stdafx.h"#include <iostream>#include <string.h>using namespace std;char* systemValueStr = "0123456789abcdefghigklmnopkrstuvwxyz";int main(){ while (1) { int n; char strbuf1[128] = {}; char str...原创 2021-02-07 11:31:05 · 974 阅读 · 0 评论 -
C++——通过域名获取ip
#include <iostream>#include <winsock2.h>#include <ws2tcpip.h>using namespace std;#pragma comment(lib, "Ws2_32.lib")int main(){ WORD wVersionRequested = 0; WSADATA wsaData = {}; int err = 0; wVersionRequested = ..原创 2020-07-15 10:51:26 · 623 阅读 · 0 评论 -
c++获得大文件的CRC32值
使用方法:先调用init_crc32_tab生成查询表,再调用calc_img_crc获得文件的CRC值。#define Poly 0xEDB88320L//CRC32标准static unsigned int crc_tab32[256];//CRC查询表//生成CRC查询表void init_crc32_tab( void ) { int i, j; unsig...原创 2020-03-03 11:28:50 · 2197 阅读 · 0 评论 -
单例模式
#define DECLARE_VIRTUAL_SINGLETON(CLASS)\public:\ static CLASS* Instance ();\ static void Destroy ();\protected:\ virtual ~CLASS() {}; \ \private:\ volatile static CLASS* m_pInstance;转载 2011-11-03 14:05:00 · 501 阅读 · 0 评论 -
在控件上右键菜单的实现
.h声明鼠标右键函数 :afx_msg void OnRclickList(NMHDR* pNMHDR, LRESULT* pResult);命令响应函数 :virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);.cpp1, 消息映射里面将鼠标右键消息与该控件绑定ON_NOTIFY(NM_RCLICK, IDC_SITE_原创 2011-11-24 15:59:37 · 677 阅读 · 0 评论 -
CLISTCTRL的使用例子
初始化样式: (void)m_SiteListCtrl.SetExtendedStyle(m_SiteListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT); (void)m_SiteListCtrl.SetExtendedStyle(m_SiteListCtrl.GetExtendedStyle()原创 2011-11-10 11:17:05 · 2251 阅读 · 0 评论 -
右键菜单的例子
在控件上相应右键消息:ON_NOTIFY(NM_RCLICK, IDC_SITE_LIST, OnRclickList)afx_msg void OnRclickList(NMHDR* pNMHDR, LRESULT* pResult);void CTUNNELPATHDlg::OnRclickList(NMHDR* /*pNMHDR*/, LRESULT* pResult){原创 2011-11-10 11:22:24 · 577 阅读 · 0 评论 -
CString彻底分析,很强悍的啊
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括了大部分常见基本问题。 这篇文章包括以下内转载 2011-11-10 23:17:08 · 1296 阅读 · 0 评论 -
windows消息队列
本节详细描述消息和消息队列以及如何在你的程序中使用他们。关于消息和消息队列与传统的应用程序不同,Microsoft Windows应用程序并不显式地用一个函数的调用(如c运行库)来获取输入,而是,等待windows系统把输入传给它们。windows系统把应用程序的所有输入传给应用程序的窗口,每个窗口都有一个称之为窗口过程的函数.当窗口有输入时windows系统要调用它,窗口过程处理转载 2011-11-10 23:21:04 · 629 阅读 · 0 评论 -
VC++如何处理自定义消息
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。下面是增加自定义消息的步骤:第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。第二步:实现消息处理函数。该函数使用WPRAM和LPAR转载 2011-11-10 23:35:58 · 536 阅读 · 0 评论 -
LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。MBCS,它是多字节字符集,它是不定长表示世界文字的编码。MBCS表示英文字转载 2011-11-10 23:13:36 · 418 阅读 · 0 评论 -
动态创建控件+所建控件的消息响应
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。转载 2011-11-10 23:32:46 · 921 阅读 · 0 评论 -
VC++6.0中如何发送自定义消息
1.PostMessage和SendMessage函数的区别 用户可以通过PostMessage和SendMessage函数来发送自定义消息,其区别在于: PostMessage只把消息放入队列,不管消息处理程序是否处理都返回,然后继续执行,这是个异步消息投放函数; SendMessage必须等待消息处理程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数;转载 2011-11-10 23:01:47 · 559 阅读 · 0 评论 -
VC++ 列表控件(CList) 使用方法
列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:LVS_I转载 2011-11-10 23:04:27 · 835 阅读 · 0 评论 -
SendMessage 和 PostMessage 的区别
1、首先是返回值意义的区别,我们先看一下 MSDN 里的声明:LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);BOOL PostMessage( HWND hWnd, UI转载 2011-11-10 23:29:27 · 718 阅读 · 0 评论 -
MFC消息映射梳理
一.CWnd消息处理一切从窗口(HWND)的创建说起,在MFC中,CWnd::CreateEx执行窗口创建过程。从调用BOOL CWnd::Attach(HWND hWndNew)那一刻起,即将一个窗口(HWND)托付给一个具体的CWnd对象(子类化)。BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR转载 2011-11-11 00:06:55 · 4776 阅读 · 1 评论 -
一个自定义消息的例子
.h#define IDM_MYCLOSEPRESS 45571LRESULT OnMyClose(WPARAM wParam, LPARAM lParam);.cppBEGIN_MESSAGE_MAP(CProgress, CDialog) //ON_WM_CLOSE() ON_MESSAGE(IDM_MYCLOSEPRE转载 2011-12-09 13:47:34 · 551 阅读 · 0 评论 -
在控件上右键菜单的实现
.h声明鼠标右键函数 :afx_msg void OnRclickList(NMHDR* pNMHDR, LRESULT* pResult);命令响应函数 :virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);.cpp1, 消息映射里面将鼠标右键消息与该控件绑定ON_NOTIFY(NM_RCLICK, IDC_SITE_转载 2011-12-09 13:48:54 · 937 阅读 · 0 评论 -
VC中如何调用其他的可执行程序
C++程序中调用exe可执行文件在开发项目的时候,有的时候会分开来开发,分开的有时是exe文件,有的时候也会调用现成的工具包里面的一些exe文件,这样在项目里面就要通过调用exe文件来使用。那么在C++里面直接调用exe文件的方法有哪些呢?现在可考虑的方法主要有:a.使用system函数b.使用exec或者是execv函数c.使用WinExec函数d.使用C转载 2012-05-26 10:32:47 · 18299 阅读 · 0 评论 -
让状态条响应鼠标事件
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg->message == WM_LBUTTONDOWN && pMsg->hwnd == m_wndStatusBar.GetSafeHwn转载 2012-06-18 20:01:24 · 944 阅读 · 0 评论 -
使用stringstream对象简化类型转换
C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换到字符串类型。为了正确地完成这个任务,你转载 2012-09-13 14:10:02 · 397 阅读 · 0 评论 -
CreateProcess输出重定向
CreateProcess输出重定向 CWnd* pEdit=GetDlgItem(IDC_IP); CString str; pEdit->GetWindowText(str); char cmdLine[MAX_PATH]; wsprintf(cmdLine,"ping.exe %s",str); SECURITY_ATTR原创 2012-09-13 14:13:31 · 1393 阅读 · 0 评论 -
12个有趣的C语言面试题
1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff);转载 2012-09-13 14:14:05 · 337 阅读 · 0 评论 -
c++中的string常用函数用法
basic_string::append 向string 的后面加字符或字符串。(比+=, push_back 更灵活)(1)向string 的后面加C-stringbasic_string& append( const value_type* _Ptr );string s ( "Hello " ); // s=”Hello ”const char *c转载 2012-09-13 14:12:48 · 592 阅读 · 0 评论 -
IP地址的转换
#include "stdafx.h"#include #include #include #pragma comment(lib,"ws2_32.lib")int _tmain(int argc, _TCHAR* argv[]){ struct in_addr addr1,addr2; unsigned long l1,l2;转载 2013-01-07 18:00:42 · 418 阅读 · 0 评论 -
如何设置其它进程中listctrl控件CHECKBOX的选中状态
LV_ITEM lvi = {0};lvi.mask = LVIF_STATE;lvi.stateMask = LVIS_STATEIMAGEMASK;lvi.state = INDEXTOSTATEIMAGEMASK(2);//不选中INDEXTOSTATEIMAGEMASK(1) HWND hWnd = (HWND)0x001007EA; //用SPY找转载 2013-09-11 16:07:39 · 2956 阅读 · 0 评论 -
UTF-8与GB2312之间的互换
相信一定有不少的程序开发人员时常会遇到字符编码的问题,而这个问题也是非常让人头痛的。因为这些都是潜在的错误,要找出这些错误也得要有这方面的开发经验才行。特别是在处理xml文档时 ,该问题的出现就更加的频繁了,有一次用java写服务器端程序,用vc写客户端与之交互。交互的协议都是用xml写的。结果在通讯时老是发现数据接受不正确。纳闷!于是用抓取网络数据包工具抓取数据,后来才发现原来是java上xml转载 2013-09-11 17:25:32 · 673 阅读 · 0 评论 -
在非MFC程序中引用CString
CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论。为了使用CString类,首先源文件必须是以cpp结尾转载 2013-09-11 17:26:44 · 665 阅读 · 0 评论 -
利用MFC编程在工具条中增加组合框控件
我们知道,Visual C++所提供的标准工具条中基本上只有一些简单的诸如文档打开、存储以及一些编辑功能按钮,而Visual C++自身的工具条功能十分丰富,尤其是工具条中内嵌的组合框控件十分方便。实际上利用MFC编程在工具条中增加一些有趣的控件还是比较容易的,下面我们就谈谈如何利用MFC编程在工具条中增加组合框控件。1. 创建AppWizard工程文件设为toolbar,采用系统缺省转载 2013-10-10 14:37:52 · 988 阅读 · 0 评论 -
VC 常见的108个问题[转]
(1) 如何通过代码获得应用程序主窗口的 指针?主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。转载 2013-10-16 14:43:47 · 1027 阅读 · 0 评论 -
对LOWORD, HIWORD, LOBYTE, HIBYTE的理解
LOWORD()得到一个32bit数的低16bit HIWORD()得到一个32bit数的高16bitLOBYTE()得到一个16bit数最低(最右边)那个字节HIBYTE()得到一个16bit数最高(最左边)那个字节LOWORD, HIWORD这个以前就很常用到, 比如消息参数 lParam 中存放着鼠标位置. lParam 是 4 字节的, 它的低两位存放 x、高两位存放转载 2013-12-12 15:19:11 · 7889 阅读 · 0 评论 -
CStdioFile类学习笔记
CStdioFile类的声明保存再afx.h头文件中。CStdioFile类继承自CFile类,CStdioFile对象表示一个用运行时的函数fopen打开的c运行时的流式文件。流式文件是被缓冲的,而且可以以文本方式(默认)或者二进制方式打开。CStdioFile类不支持CFile类中的Duplicate、LockRange、UnlockRange函数,如果你使用了,会得到CNot转载 2013-12-13 14:21:00 · 650 阅读 · 0 评论 -
进制互相转换
#include #include #include #include int main() { int i,v; char bs[33]; char b[33]; char hs[9]; char h[9]; char s[4]; char *e; /原创 2013-12-13 18:05:04 · 608 阅读 · 0 评论 -
十步完全理解SQL
很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言)。我们每天都在写 SQL 并且应用在开源软件 jOOQ 中。于是我想把 SQL 之美介绍给那些仍然对它头疼不已的朋友,所以本文是为了以下读者而特地编写的:1、 在工作中会用到 SQL转载 2014-01-10 18:16:13 · 761 阅读 · 0 评论 -
让数据库变快的10个建议
大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。在这篇文章中,我收录了十个优化数据库速度的技巧。 0. 小心设计数据库第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。对于系统和用数据转载 2014-01-10 18:17:38 · 530 阅读 · 0 评论 -
struct和typedef struct彻底明白了
struct和typedef struct分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student s转载 2014-01-10 15:07:01 · 505 阅读 · 0 评论 -
在wince程序中调用DOS命令例子
这是一个使用ping命令的例子 输入参数为目的IP地址bool checknetwork(char* szCmdLine){ bool isconn = false; PROCESS_INFORMATION pi; //保存原来路径 DWORD dwLen = MAX_PATH; TCHAR szStdOut[MAX_PATH] =原创 2014-02-28 16:17:07 · 3191 阅读 · 0 评论 -
在VC++程序中调用DOS命令例子
CString FindDevice(char* szCmdLine){char szDirectory[MAX_PATH] = {0};GetCurrentDirectory(MAX_PATH,szDirectory);char TempFile[MAX_PATH] = {0};wsprintf(TempFile,"%s\\NetStatus.txt",szDirec原创 2014-02-20 13:38:27 · 1233 阅读 · 0 评论