随笔分类 -  C/C++学习

C++ 异常处理
摘要:异常,让一个函数在遇到自己无法处理的问题时可以即时抛出,希望他到调用着直接或者间接的处理该异常。 错误的处理依然是一件很困难的事情,C++的异常机制为程序员提供了一种处理错误的方式,使程序员可以更自然的方式处理错误。 c++异常处理try catch特点: 1. try catch可以嵌套使用 2. 阅读全文

posted @ 2017-04-15 16:25 旭东的博客 阅读(1434) 评论(0) 推荐(0)

C++ 内置宏定义 与 预编译指令
摘要:内置宏和预编译指令, 在代码调试、单元测试、跨平台代码中经常会用到。这里记录一下。 1. 内置宏 (文件名,当前行号,当前日期,当前时间,当前执行方法名) __FILE____LINE____DATE____TIME__ __FUNCTION__ 2.预编译指令 可以防止头文件被多次引用 可以方便解 阅读全文

posted @ 2017-04-02 09:59 旭东的博客 阅读(4628) 评论(0) 推荐(1)

C++ 反射机制的简单实现
摘要:C++并不支持反射机制,只能自己实现。 如果需要实现字字符串到函数到映射,一定要使用到函数指针。 简单实现反射机制,根据字符串来构造相应到类。主要有以下几点: (1) 可以使用map保存字符从到函数指针到映射。 (2) 工厂类提供字符串与函数指针到注册关系。 (3) 工厂模式根据不同到字符串构造不同 阅读全文

posted @ 2017-03-31 08:19 旭东的博客 阅读(30621) 评论(0) 推荐(0)

C++ 模板学习 函数模板、类模板、迭代器模板
摘要:使用模板能够极大到使得代码可重用。 记录一下,方便后续使用。 1. 函数模板,支持多种类型参数 2. 迭代器模板,支持多种容器 3.类模板 test_temple.h test_temple.cpp test.h main.cpp 阅读全文

posted @ 2017-03-18 09:53 旭东的博客 阅读(3257) 评论(0) 推荐(0)

C++/Php/Python 语言执行shell命令
摘要:编程中经常需要在程序中使用shell命令来简化程序,这里记录一下。 1. C++ 执行shell命令 2. Php执行shell命令 3. Python执行shell命令 阅读全文

posted @ 2017-03-13 07:27 旭东的博客 阅读(1188) 评论(0) 推荐(0)

Linux 动态链接库(.so)的使用
摘要:1. 背景 库:就是已经编写好的,后续可以直接使用的代码。 c++静态库:会合入到最终生成的程序,使得结果文件比较大。优点是不再有任何依赖。 c++动态库:动态库,一个文件可以多个代码同时使用内存中只有一份,节省内存,可以随主代码一起编译。缺点是需要头文件。 网友说:库就是除了main函数之外的其他 阅读全文

posted @ 2017-03-12 15:32 旭东的博客 阅读(42430) 评论(0) 推荐(0)

C++ stringstream 简化数据类型转换
摘要:C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。 在C++中经常会使用到snprintf来格式化一些输出。为了正确地完成这个任务,必须确保证目标缓冲区有足够大空间以容纳转换完的字符串。此外,还必须使用正确的格式化符。如果使用了 阅读全文

posted @ 2017-02-28 09:03 旭东的博客 阅读(8173) 评论(0) 推荐(0)

linux C++ 获取文件绝对路径
摘要:提供ftp服务时需要获取文件绝对路径,这里记录一下。 阅读全文

posted @ 2016-05-07 09:37 旭东的博客 阅读(21811) 评论(0) 推荐(1)

C++/Php/Python/Shell 程序按行读取文件或者控制台
摘要:写程序经常需要用到从文件或者标准输入中按行读取信息,这里汇总一下。方便使用 1. C++ 读取文件 1 #include<stdio.h> 2 #include<string.h> 3 4 int main(){ 5 const char* in_file = "input_file_name"; 阅读全文

posted @ 2016-05-07 08:56 旭东的博客 阅读(1342) 评论(0) 推荐(2)

C++ 使用TinyXML解析XML文件
摘要:1.介绍 读取和设置xml配置文件是最常用的操作,TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。 下载TinyXML的网址:http://www.... 阅读全文

posted @ 2014-05-18 21:58 旭东的博客 阅读(54133) 评论(2) 推荐(3)

C/C++ 读取16进制文件
摘要:1.为什么有这种需求 因为有些情况需要避免出现乱码。不管什么编码都是二进制的,这样表示为16进制就可以啦。2.如何读取16进制文件 最近编程用这一问题,网上查了一下,感觉还是自己写吧。 16进制数据一般是:text=0x340xb5...,就是0x开头,之后是两个数字十六进制数。 如果直接使... 阅读全文

posted @ 2014-05-15 16:13 旭东的博客 阅读(21158) 评论(0) 推荐(0)

C++ Jsoncpp源代码编译与解析Json
摘要:1.Json 数据表示方式介绍 这个可以看之前的一个文章里面有说明:Java解析(读取)Json数据2.C++ Jsoncpp2.1 Jsoncpp介绍 (1)JsonCpp主要包含三种类型的class:Value Reader Writer; Json::Value是jsoncpp中最基... 阅读全文

posted @ 2014-04-29 11:19 旭东的博客 阅读(21520) 评论(0) 推荐(2)

C++ Explicit Constructors(显式构造函数)
摘要:C++ 为类(Class)提供了许多默认函数。如果自己没有申明,编译器会为我们提供一个copy构造函数、一个copy assignment操作符和一个析构函数。此外,如果没有申明任何构造函数,编译器会为我们申明一个default构造函数。很像下面的Empty类:1 class Empty{2 ... 阅读全文

posted @ 2014-04-18 16:20 旭东的博客 阅读(11893) 评论(0) 推荐(1)

C++ const用法 尽可能使用const
摘要:C++const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量 1 #include 2 using namespace std; 3 in... 阅读全文

posted @ 2014-04-15 09:21 旭东的博客 阅读(183378) 评论(7) 推荐(26)

C++ 全排列函数 std::next_permutation与std::prev_permutation
摘要:C++ STL中提供了std::next_permutation与std::prev_permutation可以获取数字或者是字符的全排列,其中std::next_permutation提供升序、std::prev_permutation提供降序。1.std::next_permutation函数原... 阅读全文

posted @ 2014-04-14 15:19 旭东的博客 阅读(28042) 评论(0) 推荐(0)

C/C++中printf/cout 计算顺序与缓冲区问题
摘要:1.printf/cout在同一个语句中都是从右向左计算的。看如下的代码:1 #include 2 int main()3 {4 int i=0;5 printf("%d %d",i++,i++);6 printf(" %d",i++);7 return 0;8 }输出结果:1 02(第5行,先计算右边的i++,再计算左边的i++。所以输出时1 0)2.printf/cout 有行缓冲区直到缓冲区满,或者遇到换行符,或者程序结束,或者刷新缓存,才进行输出。C使用fflush(stdout)刷新缓冲区;C++中使用cout.flush()刷新缓冲区。看如下 阅读全文

posted @ 2014-04-09 10:47 旭东的博客 阅读(3696) 评论(3) 推荐(0)

文本处理中的小细节
摘要:1.char还是uchar(unsigned char) char在C/C++中占用1byte(即8bits)。 ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。标准ASCII码是7位二进制表示,表示128个字符(0~127),最高位是0。如 00110000(2) =48D=30H='0'。 由于char能表示的范围是(-128~127),英文中使用了0~127号编码的字符(符号位为0,正数)。一个汉字占2b 阅读全文

posted @ 2014-04-08 22:14 旭东的博客 阅读(779) 评论(0) 推荐(0)

设计模式之责任链模式
摘要:设计模式是前人、大牛等在实际编程中对遇到的问题解决方案的抽象,也就是每一个设计模式都在编程实例中有体现。1.责任链模式在编程中的小体现,看下面的情况:(1)if else if .... 1 if(aB->D。(责任链末尾必须是默认处理类,也即switch中的default部分) 1 #include 2 using namespace std; 3 class Handler{ ///处理类抽象 4 public: 5 Handler(int _value):value(_value){} ///设置自身能够处理的编号 6 virtual ~Handler(){} 7 ... 阅读全文

posted @ 2014-03-22 21:07 旭东的博客 阅读(12499) 评论(1) 推荐(1)

OpenMP 线程同步之临界区
摘要:多核/多线程编程中肯定会用到同步互斥操作。除了互斥变量以为,就是临界区。临界区是指在用一时刻只允许一个线程执行的一段用{...},包围的代码段。在OpenMP中临界区声明方法如下:#pragma omp critical [(name)] //[]表示名字可选{ //需要同一时刻只能有一个线程访问的代码}如下面的代码: 1 #include 2 #include 3 4 int main() 5 { 6 int sum = 0; 7 #pragma omp parallel 8 printf("Hello World!!!\n"); 9 10 #pragma omp pa. 阅读全文

posted @ 2014-03-21 17:52 旭东的博客 阅读(3881) 评论(0) 推荐(0)

设计模式之原型模式
摘要:设计模式中的原型模型主要是针对构造复杂对象提出来的,当构造函数需要大量的操作时构造一个类的对象会耗费大量的资源。本文:http://www.cnblogs.com/xudong-bupt/p/3506450.html1.C++中的解决方案 在C++中默认提供了copy构造函数、copy assignment操作符,可以实现对象的内存拷贝,节省了新构造对象的开销,其中的实现机制就是操作符重载。C++代码如下: 1 #include 2 #include 3 using namespace std; 4 5 class Point{ 6 public: 7 Point(const ... 阅读全文

posted @ 2014-03-20 22:07 旭东的博客 阅读(1686) 评论(0) 推荐(0)

导航