C/C++
lizhi200404520
喜欢足球,篮球
展开
-
关于制定so动态链接库文件需要注意的问题
如果需要动态链接制定的so文件,如libtest.so,可以如下操作:1、假设so文件所在的目录为/usr/local/xxx/lib/libtest.so2、在makefile文件中链接库时,直接用/usr/local/xxx/lib/libtest.so3、vi /etc/ld.so.conf,添加一行/usr/local/xxx/lib/4、执行ldconfig命令5、需原创 2013-12-18 10:14:39 · 1011 阅读 · 0 评论 -
shell之curl用法笔记
基本用法(配合sed/awk/grep)$curl http: //bpsky.net下载保存$curl http://bpsky.net > index.html$curl -o index.html http://bpsky.net$curl -O http://bpsky.net/target.tar.gz通过代理$curl -x 123.45 . 67转载 2013-07-22 19:00:53 · 1548 阅读 · 0 评论 -
分行读取文件内容
char aline[100]; memset(aline, 0 , 100); fstream ifs("e:/result.txt"); if(!ifs) { cout "can not open file..." } while(ifs) { ifs.getline(ali转载 2013-05-15 12:16:16 · 1114 阅读 · 0 评论 -
munmap_chunk(): invalid pointer
现象:munmap_chunk(): invalid pointer问题分析:sprintf(sql,"insert ....");执行sql语句,运行报上述错误 结果:发现是sql数组定义过小导致的,编译时无法提示这样的错误!原创 2013-05-10 17:29:13 · 6421 阅读 · 0 评论 -
vcredist_x86.exe
链接来源:http://baike.baidu.com/view/6665757.htm概述vcredist_x86.exe是微软公司Visual C++的32位运行时库,包含了一些Visual C++的库函数。一般用Visual C++开发的Windows应用程序需要这个运行时库的支持才能在没有安装Visual C++的计算机上正常运行,也可以在开发软件时选择”在静态库中使用 M翻译 2013-05-17 12:59:13 · 2166 阅读 · 0 评论 -
Poco::Base64Encoder,Poco::Base64Decoder
//// Base64Test.cpp//// $Id: //poco/1.3/Foundation/testsuite/src/Base64Test.cpp#1 $//// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.// and Contributors.////转载 2013-04-27 18:16:47 · 3200 阅读 · 0 评论 -
vs2010设置工程字符集
工程->右键属性->配置属性->常规,右边“字符集”一栏选择使用的字符集,比如选择 “使用Unicode字符集”,则在工程中,#ifdef UNICODE printf("unicode\n"); #else printf("other\n"); #endif 上面的代码将输出unicode原创 2013-04-25 15:46:04 · 5735 阅读 · 0 评论 -
C++ 格式化sql 查询字符串带%的处理
sprintf(sql_target,"select ufrom %s.%s \where CMD=6 and PROFIT1010500 and \unix_timestamp(OPEN_TIME)>=unix_timestamp('%s') and \unix_timestamp(OPEN_TIME)(COMMENT not like 'bonus_%%')原创 2014-04-24 16:20:50 · 2014 阅读 · 0 评论 -
boost::shared_ptr转化为普通对象
std::vector bst_vec;原创 2014-09-25 17:14:44 · 2894 阅读 · 0 评论 -
将boost::shared_ptr设置为NULL的方法
boost::shared_ptr client;client.reset();if (client == NULL) { std::cout } else原创 2014-09-16 14:30:38 · 15544 阅读 · 0 评论 -
boost 获取当前时间戳(秒or毫秒)
int64_t GetCurrentStamp64(){ boost::posix_time::ptime epoch(boost::gregorian::date(1970, boost::gregorian::Jan, 1)); boost::posix_time::time_duration time_from_epoch = // boost::posix_time原创 2014-09-13 10:29:29 · 18467 阅读 · 2 评论 -
让Source Insight完美支持中文注释
如何让source insight支持中文注释,解决回车删除,移动光标出现乱码的问题?下面是解决方案:-------Source Insight3 中文操作(左右键、删除和后退键)支持宏-------感谢丁兆杰(zhaojie.ding@gmail.com)及互联网上辛勤耕耘的朋友们!!!Evan: sdcw@163.com① Project→O转载 2014-06-18 14:48:42 · 5397 阅读 · 0 评论 -
类的非静态成员函数做boost::thread参数
void PosixClientImpl::Start(){ m_thread = boost::thread(boost::bind(&PosixClientImpl::processMessages, this));}转载 2014-07-21 12:35:51 · 3580 阅读 · 1 评论 -
source insight代码对齐Tab键终极版
转自http://xinzero.com/source-insight-code-alignment-ended.html以前也写过一个source insight代码对齐,由于自己理解不够深刻,只能解决部分问题,不能根治在source insight中对齐的代码在XXX编辑器中全乱了的问题。在改变字体为Courier New字体后,代码无法对齐的主要原因就是Tab与空格的问题。在转载 2014-06-25 11:22:52 · 9781 阅读 · 0 评论 -
linux sed 批量替换多个文件中的字符串
一、linux sed 批量替换多个文件中的字符串sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`例如:替换/home下所有文件中的www.bcak.com.cn为bcak.com.cnsed -i "s/www.bcak.com.cn/bcak.com.cn/g" `grepwww.bcak.com转载 2014-06-23 20:35:23 · 831 阅读 · 0 评论 -
svn使用经验总结
1. 关于目录说明, 一个项目下一般会建立3个目录, trunk 、branches和tags。 trunk通常是放主干程序的,这个目录下最好保留的是一份最近最新的可编译执行的代码。 Branches 中存放该项目的一些分支,通常是一些新功能的添加或者bug修复打出的分支。最终分支的程序会merge到trunk中。 Tags一般只有增加转载 2014-04-24 19:54:35 · 763 阅读 · 0 评论 -
windows下,string 转 LPCWSTR
#ifdef UNICODEstd::wstring s2ws(const std::string& s){ int len; int slength = (int)s.length() + 1; len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0); wchar_t* buf = new wchar_原创 2013-04-25 15:17:51 · 1079 阅读 · 0 评论 -
C/C++ 宏中的 单/双井号 ( # and ## )
一、一般用法#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) \ do{ if (EXP) \ fprintf(stderr, "Warning: " #EXP "\n"); } \转载 2013-04-23 11:04:05 · 1521 阅读 · 0 评论 -
VC 实现程序只运行一个实例
进程的互斥运行:CreateMutex函数实现只运行一个程序实例 正常情况下,一个进程的运行一般是不会影响到其他正在运行的进程的。但是对于某些有特殊要求的如以独占方式使用串行口等硬件设备的程序就要求在其进程运行期间不允许其他试图使用此端口设备的程序运行的,而且此类程序通常也不允许运行同一个程序的多个实例。这就引出了进程互斥的问题。 实现进程互斥的核心思想比较转载 2013-04-23 14:26:22 · 1270 阅读 · 0 评论 -
关于类成员函数的使用
今天同学在群里发了个问题,大概描述如下:class Myclass{ public: void funb() { printf("funb\n"); m_i = 0; } int m_i;};int main(int argc,char*argv[])原创 2012-01-31 16:22:01 · 4442 阅读 · 0 评论 -
Linux 下try catch和signal
gcc编译的程序,catch只捕获throw出来的异常?如果没有throw,try catch形同虚设?待解。。。原创 2012-01-20 17:28:02 · 4937 阅读 · 0 评论 -
tinyxml库的使用
const char* content = ""; TiXmlDocument *doc = new TiXmlDocument(); doc->Parse(content); if (&doc == NULL) cout "doc == NULL" TiXmlHandle docHandle(doc); TiXmlNode * root = docHandle.原创 2012-01-17 14:54:34 · 472 阅读 · 0 评论 -
Linux下面究竟什么是symbolic link, 怎样创建一个symbolic link
A symbolic link, also termed a soft link, is a special kind of file that points to another file, much like ashortcut in Windows or a Macintosh alias. Unlike a hard link, a symbolic link does not con转载 2012-01-10 19:58:50 · 2723 阅读 · 0 评论 -
atol
函数名: atol 功 能: 把字符串转换成长整型数 用 法: long atol(const char *nptr); 程序例: #include #include int main(void) { long l; char *str = "98765432"; l = atol(str);翻译 2012-01-11 11:19:48 · 554 阅读 · 0 评论 -
关于map的erase方法的使用
void erase( iterator pos ); void erase( iterator start, iterator end ); size_type erase( const KEY_TYPE &key ); map mp; mp[1] = 2; mp[2] = 3; mp[3] = 4; map::s原创 2012-01-07 16:43:03 · 692 阅读 · 0 评论 -
如何获取前几天的日期时间值
time_t cur_time,yesterday_time; cur_time = time(NULL); // yesterday_time = cur_time - 86400;//可以根据需要调整86400这个值 struct tm *time_tm; time_tm = localtime(&cur_time); time_tm->tm_原创 2012-01-06 18:52:11 · 1021 阅读 · 0 评论 -
fscanf和fgets
首先要对fscanf和fgets这两个文件函数的概念有深入的了解,对于字符串输入而言这两个函数有一个典型的区别是: fscanf读到空格或者回车时会把空格或回车转化为/0(字符串结束符)而fgets函数则把空格(回车在下文解释)作为字符接收。 有这样一个例子:char str[13];scanf("%s",str); 如果输转载 2011-12-16 20:51:16 · 5469 阅读 · 0 评论 -
scanf使用注意点
scanf("%d,%d,%d",&a,&b,&c);中%d,%d,%d之间有逗号,在输入数据时也要加逗号,如果去掉逗号,输入时就不用逗号,而用空格,tab键或回车键将各个数据隔开原创 2011-12-10 13:55:51 · 572 阅读 · 0 评论 -
UDP 程序设计
UDP Server程序1、编写UDP Server程序的步骤 (1)使用socket()来建立一个UDP socket,第二个参数为SOCK_DGRAM。 (2)初始化sockaddr_in结构的变量,并赋值。sockaddr_in结构定义: struct sockaddr_in { uint8_t sin_len; sa_family_t si转载 2011-12-06 16:19:44 · 512 阅读 · 0 评论 -
深入理解C/C++数组和指针
C语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文各个角度论述数组和指针。一、数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值。数组可以在某些情况下转换为指针,当数组名在表达式中使用时,编译器会把数组名转换为一个指针常量,是数组中的第一个元素的地址,类型就是数组元素的地址类型,如:int a[5]={0,1,2,3,4}; 数转载 2011-12-06 13:57:07 · 497 阅读 · 0 评论 -
sprintf函数的用法
自《CSDN 社区电子杂志——C/C++杂志》在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buff转载 2011-12-06 10:41:39 · 420 阅读 · 0 评论 -
stringstream 的用法
吐数据到指定类型: string str = "2703790455"; printf("str is %s\n",str.c_str()); stringstream tmp_val; tmp_val.str(原创 2011-10-17 17:22:53 · 517 阅读 · 0 评论 -
C++ 中使用构造函数初始化列表的原因
先说说类对象的构造顺序先:1、分配内存,调用构造函数时,初始化个数据成员2、进入构造函数后在构造函数中执行一般计算 使用初始化列表有两个原因1、必须这样做:《C++ Primer》中提到在以下三种情况下需要使用初始化成员列表:一、需要初始化的数据成员是转载 2011-08-19 15:53:58 · 1155 阅读 · 1 评论 -
trie树--详解
前几天学习了并查集和trie树,这里总结一下trie。 本文讨论一棵最简单的trie树,基于英文26个字母组成的字符串,讨论插入字符串、判断前缀是否存在、查找字符串等基本操作;至于trie树的删除单个节点实在是少见,故在此不做详解。l Trie原理Trie的核转载 2011-07-19 20:27:33 · 438 阅读 · 0 评论 -
Linux下静态链接库与动态链接库的区别
一 例子详解 文件目录树如下: 1. libtest/ 2. |-- myjob.c 3. |-- myjob.h 4. |-- test.c 静态库A.做成静态库 libmyjob.a 1.$ gcc -c myjob.转载 2011-07-04 11:03:01 · 463 阅读 · 0 评论 -
编写安全代码:有符号数和无符号数的移位区别
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。作者:gfree.wind@gmail.com博客:linuxfocus.blog.chinaunix.net (下面所有的测试为Linux平台,gcc编译器)#include stdio.h>转载 2011-06-24 15:51:00 · 958 阅读 · 0 评论 -
new delete
指针和句柄的使用最好遵循以下规则: 1 初始化是赋空值。 2 分配后检查有效性。3 使用时,角标操作是否越界.4 删除/释放前检查是否为空。 5 删除后立即赋空值。原创 2012-02-03 11:01:10 · 376 阅读 · 0 评论 -
对STL容器线程安全性的期待现实一些
标准C++的世界是相当保守和陈旧的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有其他进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是它将因实现而不同。当然,多线程程序是很普遍的,所以大部分STL厂商努力使他们的实现在线程环境中可以正常工作。但是,即使他们做转载 2012-02-04 16:33:51 · 452 阅读 · 0 评论 -
scanf与缓存
作为c语言的标准输入函数,scanf在实际的编程中无疑是十分重要的,可是如果使用不当,它也会产生一些莫名其妙的错误的,而这些错误即使你使用断点调试也很难找到错误的根源所在,就像我前不久一篇文章中说到的 “access volition” 错误,scanf的使用不当就是造成这种错误的原因之一,而且由此造成的错误,你是很难发现的。 下面我说一下另外一种大家在C语言编程中可能遇到的问题,转载 2012-02-14 17:46:31 · 1021 阅读 · 0 评论 -
srand((unsigned)time(NULL));
1.随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就不会变。 看下面这个C++程序: //rand02.cpp #include #include using namespace std; int main() { unsigned int seed=5; srand(seed); un原创 2011-08-22 11:10:00 · 7208 阅读 · 0 评论