摘要:C语言的谜题来自酷壳http://coolshell.cn/articles/945.html
阅读全文
随笔分类 - C/C++
摘要:C语言的谜题来自酷壳http://coolshell.cn/articles/945.html
阅读全文
摘要:标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来发数据,实际上,udp发送数据有两种方法供大家选用的:方法一:socket----->sendto()或recvfrom()方法二:socket----->connect()----->send()或recv().(此时sendto,recvfrom仍可用)从定义可以看出,sendto和recvfrom在收发时指定地址,而send和recv则没有,那么他们的地址是在那里指定的呢,答案就在于connect函数。在udp编程中,如果你只往一个地址发送,那么你可以使用send和recv,在使用它们之前用co
阅读全文
摘要:转载( http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/?ca=drs-tp4608)简介:Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Pro
阅读全文
摘要:Linux下Daemon进程示例。将进程ID写入到文件中,并对文件加锁,确保只有一个daemon进程在运行。此外,有信号处理函数示例。(备注:参考大名鼎鼎的 APUE中示例,整理而出 :))#include <iostream> using namespace std; //TO BE ADDED
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sign
阅读全文
摘要:#include <iostream>
#include <string>
#include <errno.h>
#include <iconv.h> using namespace std; //Linux下 GB2312和UTF8转换接口
class CUtilTools {
public: CUtilTools(){}; ~CUtilTools(){}; //iInLen的长度不包括\0,应该用strlen。返回值是处理后的sOut长度 static int Utf8ToGb2312(char *sOut, int iMaxOutLen,.
阅读全文
摘要:1.2The most important thing to do when learning C++ is to focus on concepts and not get lost inlanguage-technical details.The difference between C and C++ is primarily in the degree of emphasis on types and struc-ture. C is expressive and permissive. C++ is even more expressive.1.3A programming lang
阅读全文
摘要:遇到一个问题:要将一个指定长度的char数组的图片数据通过网络传输,但是所使用的网络数据协议是字符类型的。所以char图片数组里有可能含有\0等字符,会影响到数据的解码。这是就用到了Base64算法。先来看一下Base64的介绍(http://zh.wikipedia.org/wiki/Base64)在MIME格式的电子邮件中,base64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。使用时,在传输编码方式中指定base64。使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。完整的base64定义可
阅读全文
摘要:1. 从http://code.google.com/p/googletest/ 下载最新的安装文件,我的是gtest-1.6.0.zip 2. 解压: unzip gtest-1.6.0.zip 3. 安装使用: 从1.5.0版本开始,放弃使用make install,来安装。我们可以根据README文件里的内容来了解安装方法。 快速开始:进入make目录,直接make,看到生成了sample1_unittest文件,执行一下看看结果吧! 在samples文件夹下有一些示例,耐心看一下,很容易就学会使用了。4. 附录:我的测试环境 在我的用户目录建立文件夹:gtest_dir,将gtest安
阅读全文
摘要:(关于#define的用法,看这里 http://www.cppblog.com/kenny/archive/2011/04/26/145087.html)#define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #xx##y表示什么?表示x连接y,举例说:int n = Conn(123,456); 结果就是n=123456;char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";再来看#@x,其实就是给x加上单引号,
阅读全文
摘要:MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0使用Windows7已有一年多了,一日闲来无事,偶然发现Windows7中的“打开关闭windows功能”中有一个“基于UNIX的应用程序子系统”,很是好奇,就试着安装了一下,从官网下载了一个包UtilitiesandSDKforSubsystemforUNIX-basedApplications_X86,大概250MB,安装完成后,果然很有效,系统多了一个POSIX子系统!而且该子系统提供了很多常用的UNIX命令,包括make、GCC和GDB。那我们岂不是可以用这个POSIX子
阅读全文
摘要:关于二叉树的遍历,最简单的方法就是用递归函数来实现,代码简单,思路清晰,很容易实现前序、中序、后序遍历。一般的遍历都是先遍历左子树,然后遍历又子树。对于前序、中序、后序遍历,只不过是对节点处理的先后顺序不同罢了。 若用非递归的方法实现二叉树的遍历,借助递归函数的思想,仍需使用栈的数据结构。 这里,我用C++简单的实现了一下,使用了STL的栈作为结构,来实现三种遍历。 代码如下: #include <iostream>#include <vector>#include <string>#include <stack>using namespace
阅读全文
摘要:MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0第一种方法,比较简单,借助于STL库中的next_permutation函数。next_permutation的作用就是计算全排列。示例:输出整数数组array的全排列#include <iostream>#include <algorithm>using namespace std;int array[] = {1, 2, 3, 4};const int iArraySize = sizeof(array)/sizeof(int);int main(){
阅读全文
摘要:MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal01.简介Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/。Scintilla是最优秀的编辑控件之一,实现了语法高亮,代码折叠,书签,自动完成等等诸多功能,速度快,源代码也比较好理解,易于扩展,易于增加对新语言的支持。比较著名的scite,Notepad++,Notepad2都是基于Scintilla开发的。 Scintilla提供了Win32版本和Linux版本,在Windows下,它是一个窗体控件,对它的控制都通过S
阅读全文
摘要:MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0这是本人在学习MFC过程中开发的一个小程序,通过这个程序,我确实学到了很多东西,现在拿出来和大家一起分享。可执行程序上传至:http://download.csdn.net/source/2740051源代码在:http://download.csdn.net/source/27400631.程序简介CodeEditor是Windows平台下,一款小巧的程序语言编辑器,旨在帮助您更便捷地使用电脑。CodeEditor支持语法高亮显示、代码折叠、括号匹配、自动换行、行数标记、搜索替
阅读全文
摘要:MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0一些功能的实现:(1)添加文件打开对话框: 在自己的view类中处理菜单的打开消息: // TODO: 在此添加命令处理程序代码CFileDialog fDlg(TRUE);if (IDOK==fDlg.DoModal()){ m_pNcEditWnd->OpenFile(fDlg.GetPathName());} 并在CScintillaWnd类中添加BOOLOpenFile(LPCTSTRlpFileName);函数(这个方法比较笨,可以直接使用MFC提供的串行化支持来
阅读全文
摘要:QuadraPop是索爱手机内置的一款游戏,又名“Q版海底俄罗斯方块”,是一款参照俄罗斯方块创制的游戏,其中着意表达的就是轻松的游戏以及出色的音乐效果,画面音效一流,动感十足,规则简单,引人入胜。 我本人非常喜欢这个小游戏,但遗憾的是,该游戏只有相应的jar版本,另外,网上还有一个热心爱好者开发的flash版本(http://blog.webbang.net/works/784/)。 在学习SDL的过程中,我试着自己写了这个Windows版的,仅仅实现了一些基本的功能。使用Microsoft Visual C++ 6.0编写,总代码量:大约2600行。开发语言为C++,使用了SDL的相关库。.
阅读全文
摘要:epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。一、epoll的优点支持一个进程打开大数目的socket描述符。IO效率不随FD数目增加而线性下降。内核微调。二、epoll的使用epoll有2种工作方式:LT和ET。 LT(leveltriggered,水平触发)是缺省的工作方式,并且同时支持block和no-blocksocket.在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,.
阅读全文
摘要:本文转自http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.html关于stringstream类,请参考http://www.cplusplus.com/reference/iostream/stringstream/1. 使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。2. 为什么要学习如果你已习惯了<stdio.h>
阅读全文
|