![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++ 基础
gong_xucheng
这个作者很懒,什么都没留下…
展开
-
标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
<br />C 风格(C-style)强制转型如下: <br />(T) exdivssion // cast exdivssion to be of type T <br />函数风格(Function-style)强制转型使用这样的语法: <br />T(exdivssion) // cast exdivssion to be of type T <br /> <br />这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(old-style)的强制转原创 2010-07-15 10:03:00 · 366 阅读 · 0 评论 -
gdb调试带参数的程序
gdb --args ./testprg arg1 arg2原创 2014-04-24 18:39:16 · 2337 阅读 · 0 评论 -
C++字符串常量跨平台编译问题(与字符串编码相关)
1. 问题在C++代码中,给一个string类型的变量赋值一个中文字符串常量,例如:string s = "中文字符串"变量s中保存的字节内容是什么?如果源文件的编码格式转换了,比如从GB2312转换为UTF-8,变量s中的内容会发生变化吗?其结果是否与编译器有关?假设有一个C++源程序:#include #include #include us转载 2014-05-16 08:34:39 · 2829 阅读 · 0 评论 -
使用gdb调试程序详解
熟练使用gdb是一个linux下开发人员必备的一项技能,我们由浅入深的学习一下gdb的强大功能。一.gdb简单介绍名称 gdb - GNU 调试器提要 gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog]转载 2014-04-24 18:40:02 · 585 阅读 · 0 评论 -
浅尝boost之timer
我一直是在努力推介boost,因为boost是一块美玉,但,没有什么是完美的。现在,我将暴露出boost的一点瑕疵:boost::timer。虽说是瑕不掩瑜,但瑕疵就是瑕疵。先看一看下面的例子: // win2000 中vc7.1编译运行 boost::timer t; Sleep(1000); cout t.elapsed() endl; // redhat9转载 2014-05-13 08:20:17 · 616 阅读 · 0 评论 -
Windows 下单机最大TCP连接数
在做Socket 编程时,我们经常会要问,单机最多可以建立多少个 TCP 连接,本文将介绍如何调整系统参数来调整单机的最大TCP连接数。Windows 下单机的TCP连接数有多个参数共同决定,下面一一介绍:最大TCP连接数[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]TcpNu转载 2014-05-20 16:43:18 · 5558 阅读 · 0 评论 -
用g++编译生成动态连接库*.so的方法及连接
1、动态库*.so的编译这里我们用到4个文件,它们分别为:SoDemoTest.h、one.cpp、two.cpp、three.cpp。它们的内容如下: SoDemoTest.h[cpp] view plaincopy#ifndef __SO_DEMO_TEST_HEADER__ #define __SO_DEMO_TEST_HEADER__ #incl转载 2014-05-14 09:30:33 · 738 阅读 · 0 评论 -
利用boost获取时间并格式化
利用boost来获取当前时间又方便快捷,还不用考虑跨平台的问题。1. 输出YYYYMMDD[cpp] view plaincopy#include #define BOOST_DATE_TIME_SOURCE std::string strTime = boost::gregorian::to_iso_string(\ boost::gregorian:转载 2014-05-22 14:43:40 · 8754 阅读 · 0 评论 -
为什么不能在构造函数中调用shared_from_this
先看示例代码:class Chicken : public enable_shared_from_this{public: Chicken() { shared_ptr chicken_ptr = shared_from_this(); //throw std::bad_weak_ptr }};再看shared_from_this()的转载 2014-05-24 15:51:25 · 2200 阅读 · 0 评论 -
同一个文件在windows和linux下计算md5哈希不一致的原因
最近项目需要,需要对客户传过来的文件进行md5原创 2014-10-17 10:43:21 · 13137 阅读 · 2 评论 -
Linux 下打开 Core Dump
Linux 下打开 Core Dump我使用的 Linux 发行版是 Ubuntu 13.04,设置生成 core dump 文件的方法如下:打开 core dump 功能在终端中输入命令 ulimit -c ,输出的结果为 0,说明默认是关闭 core dump 的,即当程序异常终止时,也不会生成 core dump 文件。我们可以使用命令 ulimit -c u转载 2014-11-26 14:42:31 · 551 阅读 · 0 评论 -
c++调用python链接问题及解决
python 版本3.3系统:windows问题:链接时报告原创 2014-11-21 14:11:50 · 1092 阅读 · 0 评论 -
C/C++常用时间函数介绍
在介绍之前,先介绍两个概念 Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。 Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时转载 2015-05-15 23:51:43 · 433 阅读 · 0 评论 -
动态链接库、名字修饰约定、调用约定
调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等问题。不同的语言定义了不同的调用约定。 在C++中,为了允许操作符重载和函数重载,C++编译器往往按照某种规则改写每一个入口点的符号名,以便允许同一个名字(具有不同的参数类型或者是不同的作用域)有多个用法,而不会打破现转载 2015-08-21 16:13:49 · 503 阅读 · 0 评论 -
VMware Network Adapter VMnet1和VMnet8未识别的网络的解决方法
VMware Network Adapter VMnet1和VMnet8 被防火墙认定为未识别的网络,阻隔,无法使用端口映射,虚拟机的80端口无法传入,数据包只能出不能入。且公用网络被限制不能修改为家庭或工作网络。解决办法:1,进入注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11C转载 2014-04-25 08:53:25 · 3481 阅读 · 0 评论 -
linux下批量删除utf8 bom
低版本的grep -rIlo $'^\xEF\xBB\xBF'. | xargs sed --in-place -e 's/\xef\xbb\xbf//'原创 2014-04-25 16:24:42 · 2936 阅读 · 2 评论 -
STL中用erase()方法遍历删除元素
STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 在使用 list、set 或 map遍历删除某些元素时可以这样使用:正确使用方法1 std::list List; std::lis转载 2014-05-10 13:41:03 · 780 阅读 · 0 评论 -
论调用约定
<br />在C语言中,假设我们有这样的一个函数:<br /> <br />int function(int a,int b)<br /> <br />调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算 机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须 由函数调用者和函数本身来协调。为此,计转载 2010-07-19 13:57:00 · 351 阅读 · 0 评论 -
C/C++中export的定义 -- 跨平台的c/c++导出宏定义
C/C++中export的定义 Windows下的DLL、Linux下的库或是C++中调用C的库,均可能用到import/export。本文讨论一种通用的import/export宏定义的使用实践。如下所示,"common.h"定义了可以跨平台的import/export宏定义,"something.h"定义了某个类头文件的import/export定义,"something.cpp"实现转载 2014-03-18 11:03:44 · 15722 阅读 · 0 评论 -
C++字符串常量跨平台编译问题(与字符串编码相关)
1. 问题在C++代码中,给一个string类型的变量赋值一个中文字符串常量,例如:string s = "中文字符串"变量s中保存的字节内容是什么?如果源文件的编码格式转换了,比如从GB2312转换为UTF-8,变量s中的内容会发生变化吗?其结果是否与编译器有关?假设有一个C++源程序:#include #include #include using转载 2014-04-17 09:06:04 · 1694 阅读 · 0 评论 -
linux 下 GBK-UTF-8文件编码批量转换脚本
这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。转载 2014-04-17 09:38:13 · 1310 阅读 · 0 评论 -
ubuntu 12.10 中无法安装使用g++的解决方案
Ubuntu如何通过重新安装G++编译器 ,修复不能安装使用g++的问题 我刚安装的Ubuntu 12.10,的g++编译器不能使用,用sudo apt-get install g++来安装,系统却说g++已经是最新版本了。gcc编译器倒是一切正常。 为了用上g++,只好尝试着卸载重装,以下是卸载重装的过程: 1.执行sudo apt-get remove g转载 2014-04-17 10:22:10 · 8953 阅读 · 0 评论 -
怎样自动启动VC调试器调试被另外一个程序启动的程序
调试中总会遇到这样的情况,比如,需要调试一个被另外一个进程启动的程序。最简单的方法莫过于直接在IDE中Attach到进程,但是这样的方法做一次还行。要是一直需要调试,编译后需要再调试,就会让你抓狂。平时安装有VC IDE的机器一定会碰到这样的情况:如果程序有crash,会弹出一个JIT的调试对话框,询问使用何种调试器进行调试。这种情况同样会出现在使用dump文件时。这个对话框也是我们今天需要用转载 2014-04-17 14:56:06 · 1405 阅读 · 0 评论 -
Linux下查看.so和可执行文件是否debug编译
今天同事问我, 如何判断一个.so是否是debug编译的.我记得以前自己是用file来查看一个.so, 根据是否包含"not stripped"来判断该.so是否是debug编译的, 于是就没做实验就回答.然而, stripped/not stripped并不是debug/release编译的判断标准. 我对debug和release的.so运行file后, 得出几乎相同的输出,转载 2014-04-18 09:47:41 · 7014 阅读 · 1 评论 -
消除: warning C4996: 'sprintf': This function or variable may be unsafe. Consider 的方法
最简单的可以用的方法:选项Project | Configuration Properties | C/C++ | Preprocessor | Preprocessor Definitions 添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE 下面转自: http://blog转载 2014-04-22 13:49:40 · 901 阅读 · 0 评论 -
C++文件读写详解(ofstream,ifstream,fstream)
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view plaincopyprint?#include ofstream //文件写操作 内存写入存储设备 ifstre转载 2014-05-14 18:28:52 · 611 阅读 · 0 评论 -
Linux下高并发socket最大连接数所受的各种限制
1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit转载 2014-05-09 18:04:43 · 3200 阅读 · 1 评论 -
linux下编译debug版本的ace
make optimize=0其中optimize在: $ACE_ROOT/include/makeinclude/wrapper_macros.GNU文件中定义原创 2014-04-18 09:01:26 · 2244 阅读 · 0 评论 -
Boost.Locale 之字符转换 gbk utf8 big5 string wstring等
Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式。它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升。Boost.Locale提供强大的工具,跨平台的本地化软件开发 - 这会谈到用户在其语言的软件。提供的功能:正确的大小写转换,大小写和规范化。整理(排序),其中包括4 Unicode排序规则层面的支持。日期,时间,时区和转载 2014-05-16 10:09:09 · 6774 阅读 · 0 评论 -
linux下编译boost.python
最近项目使用c++操作python脚本,选用boost.python库原创 2014-05-05 14:11:15 · 5242 阅读 · 0 评论 -
boost 编译命令
Windows下: bjam.exe --build-type=minimal --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization --with-system --with-thread toolset=msvc-9.0 variant=release li原创 2014-04-18 09:13:35 · 977 阅读 · 0 评论