
C++
cnki_ok
这个作者很懒,什么都没留下…
展开
-
Makefile中一些特殊符号的意义
在makefile中,有时会接触到一些以特殊字符打头的命令,比如@, -, +,如果之前没有接触过的话,会感觉比较奇怪,其实,多是一些为了实现特定行为模式而引入的标记符。 命令行以'@'打头的含义: 在执行到的时候不回显相应的命令内容,只显示命令的输出。命令行以'-'打头的含义: 在执行到的时候如果发生错误(退出返回非零状态)时,不中断make过程。命令行以'+'打转载 2015-05-14 16:42:54 · 1114 阅读 · 0 评论 -
gdb打印完整字符串内容
在使用gdb进行程序调试时,经常遇到打印字符串内容的情况。但是很遗憾,缺省情况下,当待显示的字符串比较长时,gdb只会显示部分字符串内容,给程序的调试带来不便。 通过如下命令可以实现gdb中打印完整字符串内容: set print element 0 好了,现在方便了,快去试试吧!转载 2014-08-01 08:58:44 · 925 阅读 · 0 评论 -
Linux 编译安装Boost
如果是windows平台,请参考:链接linux平台下要编译安装除gcc和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装:#yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel -y然后是去官网下载源码包,地址下载,解转载 2014-04-15 17:50:28 · 930 阅读 · 0 评论 -
strcmp 与_tcscmp的区别
strcmp 用来比较ANSI字符串,而_tcscmp用 来比较UNICODE(宽字符)的字符串。ANSI字符串中,1个英文字母为1个字节,1个中文字符为2个字节,遇到0字符表示字符串结束。而在 UNICODE(宽字符)中,所有的字符都为2个字节,此时字符串中间的字节,可能含有0字符,此时就不能用strcmp比较了。Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节转载 2013-04-08 09:18:13 · 6594 阅读 · 0 评论 -
fatal error LNK1169: 找到一个或多个多重定义的符号[转]
当.h文件里有函数实现时VS2005编译器报此错误,解决方法 1.在.h里的函数声明前加 inline2.在项目->属性->链接器->命令行->附加选项中加 /force转载 2013-01-31 14:19:04 · 613 阅读 · 0 评论 -
C++网页抓取
#include#include#include#include#include#pragma comment(lib,"WinInet.lib")using namespace std;int main(){HINTERNET hINet, hHttpFile; char szSizeBuffer[32];转载 2012-08-22 15:55:48 · 5014 阅读 · 1 评论 -
windows 上使用wget
我们都知道wget这个工具是Linux、Unix下才能使用的。那么windows平台下到底可否使用?答案是确定的可以的!!! 请从下面链接下载wget(1.11.4) for win: http://users.ugent.be/~bpuype/wget/ 。下载完成后,解压出wget.exe文件,把它放到c:\windows\sytem32目录下。 进入命令行 运行-转载 2012-08-29 17:18:42 · 33410 阅读 · 2 评论 -
用DOS命令批量提取文件名
DOS命令保存为bat提取文件名dir /a/b 指定目录路径 >输出目录路径\1.txt 如果输出路径为%ComputerName%.txt则命名为计算机名新建文本文档在文本文档里输入:dir *.* /a /b /s >1.txt保存为 提取名字.bat文件名字被提取到当前文件夹的1.txt里面了!也可以提取某类型的文件比如*.mp3 或者a*.mp3参 数:转载 2012-08-02 10:20:35 · 6705 阅读 · 0 评论 -
二叉查找树的算法实现
二叉查找树主要包含以下算法:search,insert,delete,max,min,successor和predecessor。下面的程序是在vc6.0下实现的。其中,关于insert和search提高了迭代和递归两个版本,display使用了递归版本,其余算法都只提供了迭代版本。#include using namespace std;templateclass BinaryS转载 2012-07-26 15:12:01 · 749 阅读 · 0 评论 -
用栈实现队列
用栈来实现队列时,采用两个栈:一个用于入队列,一个用于出队列。Queue{ Stack enStack; Stack deStack;}当有元素入队列时,插入enStack的栈定;当有元素出队列时,检查deStack是否为空,如果为空则先把栈enStack的全部元素依次放入deStack;然后和deStack不为空的情况一样,删除deStack栈顶的元素。v转载 2012-07-26 15:10:42 · 1108 阅读 · 0 评论 -
海量数据Top K算法
海量数据处理的Top K 算法就是在很大的文件中找出重复出现次数最多的前K个字符串; 如果数据可以一次读入内存,那么可以按照如下思路来解决:(1)首先遍历文件,将其加入Hash链表;Hash链表的节点定义为: typedef struct node{ char *word; int count; struct node *next;}node,转载 2012-07-22 21:17:49 · 1482 阅读 · 0 评论 -
时间和日历类的设计
1 介绍时间和日历以及时间的格式化处理在软件的设计中起着非常重要的作用,但是目前C++的库却未有一个简单易用的时间类,大部分都需要开发者直接调用操作系统的API来完成,而且很多API都不是线程安全的。某些大型的C++框架虽然提供一些时间类,但是却不通用,也很难直接拿出来使用。下面介绍一下参考Java Framework中的时间相关的类来设计并实现C++版本的时间和日历类。转载 2012-08-07 09:52:01 · 867 阅读 · 0 评论 -
插入排序
#include #include "SortMethod.h"using namespace std;原创 2014-08-04 20:29:16 · 546 阅读 · 0 评论 -
库函数一
char * __cdecl strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ ) ; /* Copy src over dst */ return( dst );}转载 2014-08-19 19:49:13 · 506 阅读 · 0 评论 -
面试中strcpy源码的判分标准
如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案: 2分void strcpy( char *strDest, char *strSrc ) { while( (*strDest++ = * strSrc++) != ‘\0’ ); } 4分 void strcpy( c转载 2014-08-19 20:14:31 · 811 阅读 · 0 评论 -
Boost::Lexical_cast 的使用
1,字符串 到 数值类型的转换2,数值 到 字符串的转换 3,异常处理情况 4,boost::lexical_cast 的原型: template Target lexical_cast(Source arg); lexical_cast 是依赖于字符串流 std::stringstream 的,其原理也是相当的简单:把源类型 (Source) 读入到字符流中,转载 2015-05-16 11:21:40 · 696 阅读 · 0 评论 -
Makefile编译选项
-D:条件选择编译-I :头文件搜索路径-l:连接静态库 AR静态库打包命令的名字,缺省值是ar。ARFLAGS静态库打包命令的选项,缺省值是rv。AS汇编器的名字,缺省值是as。ASFLAGS汇编器的选项,没有定义。CCC编译器的名字,缺省值是cc。CFLAGSC编译器的选项,没有定义。转载 2015-05-14 16:41:42 · 605 阅读 · 0 评论 -
undefined reference to `exp'
解决答案是:gcc -lm filename.c原创 2014-12-04 16:45:49 · 1464 阅读 · 0 评论 -
C++栈和队列
使用标准库的栈和队列时,先包含相关的头文件#include#include定义栈如下:stack stk;定义队列如下:queue q;栈提供了如下的操作[cpp] view plaincopys.empty() 如果栈为空返回true,否则返回false s.转载 2014-12-16 15:38:09 · 633 阅读 · 0 评论 -
用两个栈实现队列和用两个队列实现一个栈
题目:用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。template class CQueue{public: CQueue(void); ~CQueue(void); void appendtail(const T& node); T deleteHead();p转载 2014-12-16 15:41:25 · 578 阅读 · 0 评论 -
C++ map容器 按照value值排序
正常的map默认按照key值排序,而map又没有像vector一样的sort()函数,那么如果将map按照value值排序呢?有两种方法:方法1. 将map中的key和value分别存放在一个pair类型的vector中,然后利用vector的sort函数排序,其中map_verb存放我的map值:存放我的map值:[cpp] view转载 2014-08-18 11:20:01 · 892 阅读 · 0 评论 -
面试题 实现memmove函数
【题目】 用C语言实现函数void *memmove(void *dest, const void *src, size_t n)。memmove函数的功能死拷贝src所指向内存内容前n个字节到dest所指的地址上。【例子】 源字符串是hello word!,要求目标字符串也是helloword!。【分析】 作为公用库函数,请注意安全检查,注意处转载 2014-08-20 08:51:06 · 791 阅读 · 0 评论 -
c库函数
void * __cdecl memmove ( void * dst, const void * src, size_t count ){ void * ret = dst;#if defined (_M_IA64) || defined (_M_AMD64) {转载 2014-08-20 08:30:04 · 584 阅读 · 0 评论 -
memcopy和memmove的区别(笔试,面试)
Memcopy和memmove函数在linux下看了一下两个函数的源码。两个函数都在头文件string.h中定义,函数原型为:void * __cdecl memcpy ( void * dst,const void * src,size_t count);void * __cdecl memmove ( void * dst,const void * src,size_t转载 2014-08-20 08:34:06 · 634 阅读 · 0 评论 -
memset实现
void *memset11(void *dst,int val,size_t n){void *start = dst;while (n--){*(char*)dst=(char)val;dst=(char *)dst+1;}return start;}转载 2014-08-20 09:25:22 · 533 阅读 · 0 评论 -
关于实现memcpy和memmove两个库函数的一点体会
最近在论坛上看了一篇关于阿里巴巴面试题的帖子,让自己实现memcpy库函数,要求考虑特殊情况,两段内存存在覆盖,以及指针为空的情况。下面是我对此问题的几点看法(可能还有理解不到的地方)和最终修改的代码。几点结论: 1,memcpy实现从源source中拷贝n个字节到目标destin中,src源数据应该保留。2,memmove实现移动一块字节,src源数据可以不保留。转载 2014-08-20 08:51:42 · 656 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
摘要:本文将向您讲述诸多数据处理面试题以及方法的总结。 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的转载 2012-07-23 09:13:59 · 778 阅读 · 0 评论 -
面试链表逆置程序
#includeusing namespace std;struct Number //链表的类型{char data; //链表当前结点的值struct Number *next; //链表当前结点指向下一结点的指针}*number;void CreateList(Number转载 2012-07-22 19:52:35 · 487 阅读 · 0 评论 -
vc打开文件和保存文件
<br />打开文件<br /> <br /> CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,<br /> "All Files(*.TXT)|*.TXT||",AfxGetMainWnd());<br /> if ( dlg.DoModal()!=IDOK ) return;<br /> //获取文件的绝对路径<br /> sFileName=dlg.GetPathName();<br /> //打开文件<br /原创 2011-05-04 09:38:00 · 1328 阅读 · 0 评论 -
获取当前工作目录
<br />方法一:<br />#include <direct.h><br />#include <stdlib.h><br />#include <stdio.h><br />void main( void )<br />{<br /> char buffer[_MAX_PATH];<br /> /* Get the current working directory: */<br /> if( _getcwd( buffer, _MAX_PATH ) == NULL )<br />转载 2011-04-28 11:44:00 · 4496 阅读 · 0 评论 -
CListCtrl控件(2)可排序的CListCtrl控件
CListCtrl控件生成之后,无论你单击还是双击它的单元格,都没有任何反应,如果我们需要像EXCEL那样双击一个单元格后即可编辑该单元格的内容,那怎么办呢?一个方法就是双击单元格之后,在该单元格的地方生成一个编辑框,然后让输入焦点落在该编辑框上,我们即可对该编辑框进行文字编辑,当输入焦点从编辑框上消失时(通常是用户在编辑框外的地方单击,就像EXCEL当编辑完一个单元格的内容后用户在单元格外的地方单击一下以示确认输入完毕一样。),就理解为编辑完毕,然后把编辑框的内容设置为该单元格的内容,最后隐藏或销毁编辑框转载 2011-04-27 15:39:00 · 598 阅读 · 0 评论 -
CListCtrl控件(1)基本操作
<br />1.动态生成列表控件。在资源页面里,点击列表控件,然后在需要放置列表的地方拖拉就可以生成一个列表,查看它的属性->样式,可以设置它的样式,例如图标,小图标,列表,报告,单个选择,自动排列,没有标签换行,编辑标签 等等。这种方法是静态生成列表控件,程序运行时列表就已经生成了,如果我们需要动态生成列表控件,让列表在我需要他生成的时候才生成,就要用CListCtrl::Create函数。BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParen转载 2011-04-27 15:38:00 · 886 阅读 · 0 评论 -
按字切分
<br />#include <iostream><br />#include <fstream><br />#include <string><br />using namespace std;<br />void main()<br />{<br /> ifstream infile("带切文本.txt");<br /> if (!infile)<br /> {<br /> cerr<<"error:can not open the file"<<endl;<br /> exit(1);<br /原创 2011-04-28 12:37:00 · 663 阅读 · 0 评论 -
CListCtrl控件(3)可排序的CListCtrl控件
<br /> 下面要做一个CListCtrl控件,当用户点击某列标题的时候,就根据该列数据进行全部记录的升序或降序排列。步骤如下:1.从CListCtrl类继承,新建一个新的列表控件类,这里我把它命名为CSortListCtrl。 2.为CSortListCtrl类添加以下成员变量: BOOL m_fAsc; //用来设置是升序排列还是降序排列 int m_nSortedCol; //用来记录被点击的是哪一列 3.在CSortListCtrl转载 2011-04-27 15:40:00 · 626 阅读 · 0 评论 -
CListCtrl控件(4)可排序的CListCtrl控件
CListCtrl控件的标题栏默认是灰色的,如果和旁边的颜色不搭配,想要修改它的颜色,如何做呢?下面给出了实现方法。1.从CHeaderCtrl继承,新建一个类,在这里我把新建的这个类命名为CColorHeaderCtrl。从名字来看,CHeaderCtrl类应该是用来控制标题的,除了能控制列表的标题以外,还能不能控制其他东西的标题我就没深入研究过了。 2.对CColorHeaderCtrl类的WM_PAINT消息进行消息响应,在响应函数里进行标题的重绘,响应函数的实现如下:void CColorHeade转载 2011-04-27 15:41:00 · 700 阅读 · 0 评论 -
利用GetPrivateProfileString读取配置文件(.ini)
配置文件中经常用到ini文件,在VC中其函数分别为:<br />写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);<br />读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpRetu转载 2011-04-20 10:27:00 · 491 阅读 · 0 评论 -
入门必看:未来IT人才市场最热门的12项技能zz
<br />出处:计算机世界, 2007-10-25 10:50<br />IT行业很热门,不过前提是你要有所需的技能。如果你想进入这个行业,不妨看看在不久的将来最热门的几项IT技能。<br /> Kevin Scott是谷歌公司的高级技术经理,也是美国计算机协会专业与教育委员会的创始成员,他说: “我在硅谷看到的一切与认为程序员行将消失、其工作外包出去的观点完全相反。从大企业到新兴公司,许多公司都在积极招聘。”<br /> 许多招聘人员认为,现在有更多的空位可供求职者挑选。据美国密尔沃基马奎特大学的转载 2011-05-19 15:58:00 · 1138 阅读 · 0 评论 -
MFC中菜单的简单用法
<br />当新建一个MFC SDI应用程序以后,会自动的添加一个菜单栏,在菜单栏中,会包含常规的菜单项:文件、编辑、查看、帮助等;理所当然的,我们可以轻松的编辑这些菜单项。 <br /> 1、添加菜单项:选择“ResourceView”;在树列表中找到“Menu” –> “IDR_MAINFRAME”,双击打开。这个就是我们要编辑的菜单。这个时候可以双击最后面的一个空白框,会打开一个窗口,输入名称和显示即可完成添加。要添加菜单中的项,选中菜单,会显示它所包含的所有项,在最先面同样有一个空白框,双击,输入转载 2011-05-10 14:33:00 · 902 阅读 · 0 评论 -
PathFileExists用法--使用#include
BOOL PathFileExists(LPCTSTRpszPath);<br /> Determines if a file exists. <br />---经检测,该函数可以检测文件或目录是否存在!Remarks<br />This function tests the validity of the file and path. It works only on the local file system or on a remote drive that has been moun原创 2011-05-09 14:22:00 · 8288 阅读 · 0 评论 -
cstring 截取字符串
<br />CString str("1253d87kk");<br /> strNum=str.GetLength();<br /> CString Str1;<br /> Str1=str.Mid(0,strNum-1);<br />结果:1253d87k<br />wstring wstr ("abcdefg"); <br />wstr.substr(3,3); // == "def"原创 2011-05-04 09:32:00 · 798 阅读 · 0 评论