
C++
肖老板
ECNU_SEI
展开
-
一道简单的题
下面C的值为多少呢?#define foo(x) x + 1int c = foo(10) * 2;原创 2013-06-27 13:55:55 · 832 阅读 · 0 评论 -
C++类型转换之四种cast操作符
类型转换既是将一种数据类型转换为另外一种数据类型,从而改变该变量的表示方式以及操作。具有标准定义类型的简单数据类型(如int、double)之间的转换可以使用传统的转换方式,既强制转换,也是C语言风格的转换方式,如下:TypeA a;TypeB b = (TypeB)a;在C++编程中较多地使用到类和类的指针,往往会遇到子类和父类之间的相互转换,但传统的转换方式不适用于类和类的指针之间的转换,因此原创 2013-07-18 16:00:41 · 1642 阅读 · 0 评论 -
C++虚函数与纯虚函数
虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为。 下面来看一个例子: 程序运行输出结果: 8, 12 为什么Base 对象的大小是8个字节而不是4个字节原创 2013-07-18 16:00:50 · 757 阅读 · 0 评论 -
C++ int 和 string 之间的相互转换
要实现这个目标,非stringstream类莫属。这个类在头文件中定义, 库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。string到int类型的转换使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使原创 2013-07-18 16:01:06 · 1126 阅读 · 0 评论 -
C++ Class incomplete type is not allowed
哈哈,居然是 没有加头文件!!!!原创 2013-07-18 16:00:35 · 5219 阅读 · 5 评论 -
while(true)循环与CPU占用率问题
之前写程序的时候一直没有主动注意CPU占用的问题,今天在进行RTSP服务端测试的时候发现只是接入了一两个连接,CPU的占用率已经达到了100%,吓死我了~虽然之前已经预料到CPU占用会很高,但实际测试结果还是让我出了一身冷汗,这样的程序怎么能够发布使用呢?应该逐渐关注程序性能算法优化这方面的问题。当然,导致CPU占用率如此之高的元凶就是程序中的几个while(true)死循环。用代码解释如下:wh原创 2013-07-18 16:00:46 · 16051 阅读 · 4 评论 -
error LNK2038: mismatch detected for \'_ITERATOR_DEBUG_LEVEL\': value \'0\' doesn\'t match value \'2\' in *.obj
今天在使用自己编写的RTSP静态库时遇到如下的问题:error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in *.obj。很郁闷,昨天改写了静态库,但是没有及时上传到SVN上面的,然后进行了一次“reverse”,然后就悲剧地出现了超多莫名其妙的bug。再慢慢原创 2013-07-18 16:01:02 · 4175 阅读 · 0 评论 -
C++的Json解析:jsoncpp 和boost
转自优快云:http://blog.youkuaiyun.com/hzyong_c/article/details/7163589JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的json解析库的使用方法。json官网上列出了各种语言对应的json解析库,作者仅转载 2013-07-18 16:01:26 · 1084 阅读 · 0 评论 -
C++ 编码转换
https://github.com/yaocoder/utility/blob/master/src/string/windows/EncodingConverter.h#pragma once#include #ifdef tstring#error "\"tstring\" Macro has been defined."#else#ifdef _UNICODE#define tstrin转载 2013-08-26 15:39:24 · 1528 阅读 · 0 评论 -
Visual Studio 2010 Sp1– “A Selected Drive is No Longer Valid”
之前安装VS2010时图方便就只安装了自己需要VC++,最近需要用到C#,然后就重新安装VS2010,然后“add new fetures”将C#支持添加进来,但是就出现问题了!问题如下:找了半天,然后最终得出解决方案就是,将之前装的VS_SP1卸载掉,添加完自己需要的组件之后,再重新安装VS_SP1!我能说什么呢?貌似这个问题出现很久了,但是微软并没有什么官方的解决办法啊!另外,开始菜单----原创 2013-07-18 16:01:15 · 1763 阅读 · 0 评论 -
Live555本地库的编译
Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,能够支持RTP/RTCP、RTSP、SIP等标准流媒体传输协议。1.要编译Live555,首先要去官方网站(http://www.live555.com/liveMedia/public/)上面下载最新的源代码;2.将live555-latest.tar.gz下载到本地后,使用解压缩命令“tar zxvf live555-lates原创 2013-07-18 16:00:59 · 2121 阅读 · 0 评论 -
Send string in PUT request with libcurl in C++
我的代码如下,但是没有作用,HTTP Server端不能接收到PUT的数据:curl = curl_easy_init();if (curl) { headers = curl_slist_append(headers, client_id_header); headers = curl_slist_append(headers, "Content-Type: applic翻译 2013-08-14 13:34:53 · 4648 阅读 · 0 评论 -
MFC中关闭窗口的几种方法
MFC中关闭窗口的几种办法:退出程序用AfxGetMainWnd()->SendMessage(WM_CLOSE);关闭当前窗口用DestroyWindow( );关闭模式对话框用EndDialog(0);原创 2014-04-16 19:43:12 · 22424 阅读 · 0 评论 -
"name.bat" is not a recognized as an internal or external command,operable program or batch file
当我们在执行“name.bat”批处理文件时,有时候会遇到“"name.bat" is not a recognized as an internal or external command,operable program or batch file”的错误提示,通常这是由于环境变量造成的。解决此类问题的一个方法比较直接有效的方法是设置系统的环境变量,步骤如下:1. 开始菜单---->我的电原创 2014-03-25 16:11:31 · 8380 阅读 · 0 评论 -
HWND句柄与CWnd窗体类的区别与转换
一、区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。 CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。二、如何得到窗口对象指针C转载 2014-10-22 17:00:44 · 2743 阅读 · 0 评论 -
CString 和 string的互换
首先,CString和string都是C++中的字符串模板类,string作为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;而CString(typedef CStringT > CString)是Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI)、wchar_t(unicode)、T原创 2012-11-22 13:48:33 · 879 阅读 · 0 评论 -
TCP bind() GetLastError() 10049
TCP bind() GetLastError() 10049?试试将 tcpServer.sin_addr.S_un.S_addr = inet_addr(Address().c_str()) 改成 tcpServer.sin_addr.S_un.S_addr = INADDR_ANY原创 2013-07-30 16:00:44 · 3716 阅读 · 1 评论 -
C++获取系统当前时间
vector buf(128); time_t tt = time(NULL); unsigned int size = strftime(buf.data(), buf.capacity(), "%a, %b %d %Y %H:%M:%S GMT", localtime(&tt)); string date(buf.begin(), buf.end()); date.resize(siz原创 2013-07-22 22:32:18 · 987 阅读 · 0 评论 -
使用AllocConcole()创建外挂console
现在Windows编程一般都使用窗口程序设计,即GUI模式。但有时我们需要输出一些信息用于调试或查看某些状态,我们可以在应用程序里自己开一个控制台(就像DOS窗口一样),然后重定向输入输出,就可以用 printf/cout 函数向控制台输出信息了,具体方法如下。 AllocConsole(); SetConsoleCtrlHandler(NULL, true);原创 2013-08-25 14:53:30 · 4300 阅读 · 0 评论 -
explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有的时候可能会不需要这种隐式转原创 2013-07-18 16:01:31 · 1162 阅读 · 0 评论 -
设置本机MTU值
Windows环境下查看本机的MTU值:netsh interface ipv4 show subinterface设置本机的MTU值:netsh interface ipv4 set subinterface "Local Area Connection(本地连接)" mtu=1470 store=persistent原创 2013-07-15 22:57:37 · 2255 阅读 · 0 评论 -
Linux下获取毫秒级时间差
代码如下:#include #include #include int main(int argc, char* argv[]){ struct timeval struc_start, struc_end; long dif_time = 0; //get start time gettimeofday(&struc_start, NULL); long start = ((long)原创 2013-07-18 16:00:28 · 1991 阅读 · 0 评论 -
C++ vector一边遍历一边删除元素
使用iterator迭代器对vector进行遍历,删除元素时使用的erase函数返回的是vector中的下一个元素。代码如下:/* ObjectVector是一个Object类型的迭代器,轮询ObjectVector,如果Object::IsAlive()返回false则从vector中删除该Object */vector::iterator it = ObjectVector.begin();w原创 2013-07-18 16:00:44 · 7467 阅读 · 0 评论 -
C++中引用与指针的区别
C++中引用与指针的区别http://www.cnblogs.com/kingln/archive/2008/03/29/1129118.html原创 2013-08-18 00:44:38 · 967 阅读 · 0 评论 -
C++ 获取本机IP地址和HostName
#include #include using namespace std;#pragma comment(lib, "ws2_32.lib");int main(){ WSADATA wsaData; WORD sockVersion = MAKEWORD(2, 2); ::WSAStartup(sockVersion, &wsaData); char lv_name[50]; gethostn原创 2013-07-18 16:01:10 · 5525 阅读 · 0 评论 -
error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
在VS2010下,右击项目属性,然后进入“Configuration Properties->Linker->System”,将"SubSystem"选项下的值更改为"Console",保存,重新编译即可。原创 2013-07-18 16:01:22 · 1337 阅读 · 0 评论 -
C++ namespace的使用
转自优快云:http://blog.youkuaiyun.com/liufei_learning/archive/2010/03/18/5391334.aspx 一、 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。 在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内转载 2013-07-18 16:01:28 · 953 阅读 · 0 评论 -
获得系统时间的五种常用方法
1.使用CTime类(获取系统当前时间,精确到秒)CString str;//获取系统时间CTime tm;tm=CTime::GetCurrentTime();//获取系统日期str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK);a,从CTimet中提取年月日时分秒 CTime t = CTime::Ge转载 2014-12-09 21:45:53 · 2650 阅读 · 0 评论