C/C++
文章平均质量分 63
奶爸
热爱音乐,热爱生活
展开
-
C++使用全局变量
如果在在多个.cpp文件中都要用到某个变量,那么这个变量就是全局变量。首先,在.h文件中声明这个变量,加上extern关键字,但是不能给变量赋值。比如在头文件a.h中这样写:#ifndef _A_H#define _A_Hextern int global;#endif在main()函数所在的文件种定义这个全局变量,可以初始化。#include using namespa原创 2012-05-23 19:09:43 · 1339 阅读 · 0 评论 -
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection'解决办法
在Qt上使用SQLite的时候,如果第二次连接原创 2014-07-16 10:33:29 · 25856 阅读 · 20 评论 -
Qt: 释放窗口资源
1. 对于使用指针,使用new创建的窗口,当然可以使用delete显示的释放其占用的资源:Widget *w = new Widget();delete w;2. 对于使用指针,使用new创建的窗口,还可以使用QWidget::setAttribute方法来当窗口关闭后自动释放其占用的资源,而不用户显示的去调用delete释放,此方法当然也会调用窗口的析构函数:转载 2014-07-18 17:09:19 · 1718 阅读 · 0 评论 -
Linux网络编程(2)简单的TCP回射服务器(Echo Server)
简单的TCP回射服务器原创 2014-10-16 20:57:11 · 5287 阅读 · 1 评论 -
Linux网络编程(3)使用select处理多个连接的回射服务器
作为一个服务器,只处理一个连接是在有点说不过去。当有多个客户端建立连接时,需要保持较好的并发性,以及时处理每个连接。最简单的一种方法就是把socket设置为非阻塞方式(使用ioctl()函数),然后在一个死循环中一直轮流测试每个连接的recv(),如果收到数据,再发送回去。这样做最大的坏处就是在没有可以读的数据时,CPU一直处于忙等待的状态,浪费了宝贵的CPU资源。有一种不使用忙等待的方法原创 2015-05-24 17:25:51 · 2504 阅读 · 0 评论 -
Linux网络编程(1)简单的TCP客户端
简单地TCP客户端原创 2014-11-11 10:33:03 · 1109 阅读 · 0 评论 -
C++ 格式化输出
C++ 格式化输出enum { skipws = 0x0001, // 跳过当天及后面所有连续的空白符。 left = 0x0002, right = 0x0004, internal = 0x0008, // 在指定的域宽内数值的符号按左对齐、数值本身按右对齐输出。 dec = 0x0010, // 10 oct = 0x0020, // 8 hex =转载 2015-09-14 11:11:31 · 1755 阅读 · 0 评论 -
求字符串的不重复字符的最长子串长度的问题
已知一个字符串,只含有小写字母,求出zifuc原创 2014-11-09 20:46:05 · 4101 阅读 · 1 评论 -
C/C++内联函数(inline)
C/C++提供了内联函数这个机制。内联函数是向编译器建议:编译这个函数的时候直接把函数展开,而不是进行函数调用。但是这只是一个建议,编译器可能并不接受这个建议,仍然把它当做普通函数进行编译。合理使用内联函数的优点是:减少函数调用的操作,也就是免去了保存堆栈现场、参数进栈、跳转、清理堆栈、恢复堆栈现场等一系列的操作,从而提高了程序的效率。使用宏函数也可以达到类似的效果,然而宏函数有一个致命的原创 2016-01-13 14:11:18 · 1501 阅读 · 2 评论 -
Visual Studio Error LNK2001 无法解析的外部符号 的几种情况
VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。 初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolved转载 2016-11-07 14:28:30 · 11412 阅读 · 1 评论 -
C语言itoa()函数
我手写了一个itoa()函数原创 2014-05-02 17:22:52 · 2639 阅读 · 0 评论 -
default argument given of parameter 的问题
我写了一个类,其中的一个方法的一个参数是有默认值的:private: void send_message(char *msg, qint16 iid=0);实现的时候:void tcp_socket_class::send_message(char *msg, qint16 iid=0){ ... ...}编译时报错:error:原创 2013-06-02 21:10:46 · 5042 阅读 · 0 评论 -
矩阵连乘问题
给定n个矩阵A1,A2.......An,其中Ai与Ai+1是可乘的。 由于矩阵的乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这中计算次序可以用加括号的方式来确定。例如,矩阵连乘积A1A2A3A4可以有一下5种不同的完全加括号方式: (A1(A2(A3A4))) (A1((A2A3)A4)) ((A1A2)(A3A4)) ((A1(原创 2012-07-11 11:52:16 · 17626 阅读 · 2 评论 -
二分搜索
二分搜索是一个分治算法。 个定已排好序的n个元素a[0:n-1],在这n个元素中找出某一特定的元素x。 二分搜索法的基本思路是把n个排好序的元素从中间分成大致相等的两部分,如果x==a[n/2],则找到x,如果x 可以用以个递归的方法来实现二分搜索函数binary_search()。返回找到元素的下标。#include int binary_search(i原创 2012-06-29 18:08:42 · 561 阅读 · 0 评论 -
合并排序
合并排序算法是用分治策略实现对n个元素进行排序的算法。其基本思想是:将带排序元素分成大小大致相同的两个子集合,分别对这两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。代码如下:#include #include void merge_sort(int[], int, int);void merge(int[], int, int, int);int main原创 2012-07-12 17:59:07 · 790 阅读 · 0 评论 -
快速排序
快速排序算法是基于分治策略的一种排序算法。基本思想是,对于输入的子数组a[left : right],按以下三个步骤进行排序: (1)分解。以a[left]为基准元素将a[left : right]分成三段,a[left : p-1],a[p], a[p+1 : right]。使得a[left : p-1]中的任何一个元素小于a[p],a[p+1 : right]中的任何一个元素大于a[原创 2012-07-03 09:05:21 · 875 阅读 · 0 评论 -
Qt 出现"Undefined reference to 'vtable for'原因总结
由于Qt本身实现的机制所限,我们在使用Qt制作某些软件程序的时候,会遇到各种各样这样那样的问题,而且很多是很难,或者根本找不到原因的,即使解决了问题,如果有人问你为什么,你只能回答--不知道;今天我在这里列举的问题也是再编写Qt程序时,总是遇到的问题,问题普遍,而答案却不唯一,解释这一个问题的说法很多,往往只适合某一种情况,因为这个错误太笼统了,它就是-- “undefined referen转载 2012-08-12 16:17:45 · 1015 阅读 · 0 评论 -
Linux下用math.h头文件
math.h 对应的库是/lib/libm.so.6或/usr/lib/libm.so在命令的最后加上-lm参数就行了,比如这样:gcc -W abc.c -o abc -lm./abc再执行就行了。这里默认的参数使-lc,不加也可以。原创 2012-10-09 17:24:16 · 4764 阅读 · 0 评论 -
printf格式化输出
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为: printf("", ); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式。 参量表是需要输出的一转载 2012-10-13 21:15:57 · 607 阅读 · 0 评论 -
Linux中用st_mode判断文件类型
在Linux中,可以利用stat()函数来获取一个文件的状态#include #include int stat(const char *file_name, struct stat *buf);这个函数执行成功返回0,失败返回-1。取得的文件状态存放在buf指针指向的struct stat结构提中, struct stat的定义如下:struct stat { dev_t原创 2012-12-11 12:41:57 · 44285 阅读 · 7 评论 -
Qt中的QTcpSocket类的write()方法不能发送数据的解决方法
在客户端打算用QTcpSocket的一个对象给服务器发消息的,但是每次都连接上,就是发送不出去。我用的Qt版本是4.8后来在使用完write()方法后,再使用flush()方法,就可一发送消息了。qt的官方文档里说,调用了flush()方法后,可以把缓冲的数据立刻发送出去。所以我估计QTcpSocket中的write()方法是带有缓冲的。原创 2013-05-31 15:47:48 · 11436 阅读 · 1 评论 -
UNIX/Linux匿名管道
零、简介管道,即匿名管道,是UNIX系统上非常古老的进程间通信方法,也是最常用的。它常用于由父子进程之间的通信,比如在shell中把一个命令的输出使用管道传递给另一个命令作为输入。一、管道的特点管道传递的是字节流,就像TCP socket一样,没有数据块大小的说法。所以无法使用lseek()来随机访问数据。使用管道读写数据的方法和读写文件类似,可以使用read()和write()系统调用。如果管原创 2017-07-20 23:04:59 · 608 阅读 · 0 评论