- 博客(61)
- 资源 (2)
- 收藏
- 关注
原创 json解析入门(jsoncpp库)
在使用C++开发中,很多时候都会用到配置文件,配置文件常见的有json和xml这两种文件,其中json常用的解析库有:jsoncpp和boos库,下面就简单的讲讲jsoncpp是如何解析json文件的。 json文件内容如下所示:// josn文件内容{ "name" : "HaKing", "age" : 24, "array" : [ {
2016-04-21 15:38:25 947
原创 编写String的构造函数、析构函数、拷贝构造函数、赋值函数
函数原型class String{public: String(const char* str = ""); ~String(); String(const String& other); String&::operator=(const String& other);};String的普通构造函数String::String(const char* str)
2016-04-19 15:04:27 474
原创 const有什么用途?
定义常量被const修饰过的变量不能被修改,故此具有常量之称。如果类的成员变量是常量,那么在初始化的时候必须初始化。const int MAX = 100;修饰函数const可以修饰函数的返回值,参数及,函数的定义体,被const修饰会受到强制的保护,能防止意外的修改,从而提高函数的健壮性。1.修饰参数不能在定义体中修改形参的值// 函数声明void updateWithID(const int
2016-04-19 14:46:48 6396
原创 自定义lua输出
-- 实现lua大部分数据的输出Tools = {}function Tools:printData(data) if data == nil then print("没有数据") return elseif type(data) == "boolean" then if v then print("值 =
2016-04-19 11:29:03 1651
原创 C++vector方法详解
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化,故此有动态数组之称。vector类常用的函数如下所示:1.构造函数vector(); // 创建一个空vector
2016-04-14 13:25:22 795
原创 C++获得vector最后一个元素
std::vector<int> intVector;intVector[intVector.size() - 1]; // 方式1intVector.end(); // 方式2
2016-04-14 00:00:24 49699 6
原创 Lua面向对象
1.封装封装的原理是为table添加metatable,并设置__index元方法。例如:People = {age =18};function People:new() local people = {}; setmetatable(people,self); self.__index = self; return people;endfunction Peopl
2016-04-10 22:27:49 465
原创 VA常用的几个快捷键
使用VS已经有一年多了,自己总结了一些VA经常用到的快捷键,使用起来非常的方便Ctrl + Home // 跳到文档最前面 Ctrl + End // 跳到文档最后面 Home // 跳到一行最前面 End // 跳到一行最后面Alt + G: 在定义与声明之间互跳。Alt + O: 在.h与.cpp之间互跳。(O是字母O,不是数字零)Alt + Shift + Q:鼠
2016-04-08 14:16:59 9318
原创 BMFont位图制作工具的使用
在游戏中常常会使用艺术字体,所以这个时候我们就需要BMFont制作字体了,BMFont自身内置了很多字体,如果没有自己喜欢的字体,那么可以下载ttf后导入,好了,今天要讨论的是如果使用美术资源生成美术数字。1.准好制作位图的工具,如果没有的话我可以提供下载喔~ 下载地址:http://download.csdn.net/detail/mitu405687908/9484780 Font sett
2016-04-08 12:17:18 8923 3
原创 用C++设计一个不能被继承的类
如果将一个类设计成不能被继承来的类,只要把类的构造函数设置为私有的,即可解决问题。因为那样的话,子类就没有办法访问基类的构造函数,从而就阻止了进行子类构造对象的任务实现,也就达到了不可继承的目的。 因为构造方法为私有,所以外部也不能调用构造函数生成实例,我们需要提供特殊的方法创建实例。 具体做法是定义静态方法,在方法内部实现一个对象,然后返回它的指针。class Base{public:
2016-04-07 14:53:47 719
原创 C++三元运算符?:
C++有3种运算符:算数运算符、关系运算符和逻辑运算符。运算符在计算机中的执行顺序 运算符用来构成表达式并指示计算机执行计算,其基本特性就是优先级和结合律。在没有使用小括号确定一个复合表达式中个运算符的计算顺序的情况下,编译器将使用它们的优先级和结合律老确定计算顺序,优先级越高的运算符越先运算。如果代码行中的运算符比较多,用括号确定表达式中每一个子表达式的计算顺序,避免使用默认优先级。C++中唯一
2016-04-07 13:31:23 49053 2
原创 mac系统下恢复和禁止.DS_store的生成
禁止.DS_store生成 打开 “终端”,复制黏贴下面的命令,回车执行,重启Mac即可生效。defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE恢复.DS_store生成 打开 “终端”,复制黏贴下面的命令,回车执行,重启Mac即可生效。defaults delete com.apple.des
2016-04-06 17:39:54 1594
原创 C++单例模式
Singleton单例模式Singleton 是对全局变量的取代策略 作用:保证一个类只能有一个实例,并提供一个全局唯一的访问点。单例模式的特点 (1)仅有一个实例:通过类的静态成员变量来体现,并且是私有的; (2)提供访问它的全局访问点:访问静态成员变量的静态成员函数来体现。 《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一
2016-04-06 17:04:21 781 1
原创 清除Xcode最近打开的项目
我们使用Xcode时难免创建很多项目,每次打开Xcode的时候是不是看见那么多项目菜单很烦呢,如果想要删除的话,方法很简单,详细步骤如下:1、点击Xcode图标2、是不是有最近项目预览呢3、清除最近使用的项目预览over...
2015-03-28 15:05:56 7491
原创 lua获取当前时间
Lua获取当前时间 local getTime = os.date(“%c”); 其中的%c可以是以下的一种:(注意大小写) %a abbreviated weekday name (e.g., Wed) %A full weekday name (e.g., Wednesday) %b abbreviated month name (e.g., Sep) %B full mon
2017-04-07 17:26:33 12110
原创 配置mac版sublime text lua编译环境
Tools->Build System->New Build System… 复制以下代码保存为lua.sublime-build文件,选择为automatic模式,ctrl + b编译及运行 { "cmd": ["/usr/local/bin/lua", "$file"], "file_regex": "^(...*?):([0-9]*):?([0-9]*)", "selector"
2017-04-07 17:24:56 920
原创 mac 安装lua环境
curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz tar zxf lua-5.2.3.tar.gz cd lua-5.2.3 make macosx sudo make install ctrl + c 退出lua环境
2017-04-07 17:18:29 764
原创 cocos2d-x 下载图片
void HelloWorld::downloadPicture(){ HttpRequest *request = new HttpRequest(); request->setRequestType(HttpRequest::Type::GET); request->setTag("downLoad tag 1"); request->setUrl("http:
2017-02-21 14:48:48 1031
转载 Cocos2d-x开发--使用CCRenderTexture将矩形图片裁剪成圆形显示
日前,自己在做项目的过程中遇到此需求:需要将Facebook好友的方形头像变成圆形头像展示。通过网上的搜罗研究,发现使用CCRenderTexture是个不错的方法,归纳总结之后,形成了下面这个方法。 其实,用这个方法不仅可以将图片裁成圆形,而是可以裁成任何你想要的形状。关键只在于你使用的是何种形状的蒙版图片而已。 方法如下: [cpp] view plain copy print? CCS
2017-02-06 20:36:59 1871
原创 C++输出文件名、函数名、行号
在调试中,控制台输出文件名、函数名、行号是非常有助于调试的std::cout << "file path = %s" << __FILE__;std::cout << "function name = %s" << __FUNCTION__;std::cout << "line = %d" << __LINE__;
2017-01-06 16:21:55 4240
原创 线程同步(互斥量)
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h>#define NUM_THREAD 100 // 线程数pthread_mutex_t mutex; // 互斥量void* thread_increase(void* arg); // 加void* thread_reduce(void
2016-10-31 18:35:32 295
原创 多线程
线程创建以及运行#include <pthread.h> /* 创建子线程 * 函数名: pthread_create * 参数: * thread 保存新创建线程ID的变量地址值。线程与进程相同,也需要用于区分线程的ID。 * attr 用于传递线程属性的参数,传递NULL时,创建默认属性的线程。 * atart_routine 子线程开始执行的
2016-10-31 18:31:54 282
原创 mac下创建.bash_profile步骤
启动终端Terminal进入当前用户的home目录 输入 cd ~创建.bash_profile 输入 touch .bash_profile编辑.bash_profile文件 输入 open .bash_profile 在弹出的页面进行编辑保存文件,关闭.bash_profile更新刚配置的环境变量 输入 source .bash_profile
2016-07-22 13:42:23 2350
原创 sublime text 快捷键
Sublime Text 2 - 性感的代码编辑器、程序员之必备神器Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器。Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。SublimeText的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多
2016-06-23 11:40:31 670
转载 cocos2d-x面试题合集
1、Cocos2d-x是怎样实现跨平台?AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同平台的不同实现。比如我们通常认为一个程序是由 main 函数开始运行,那我们就去找寻,我们看到了在 proj.linux 目录下存在 main.cpp 文件。在main.cpp 中 CCApplication::sharedApplication()–>run();这一句看起,这一
2016-06-17 00:00:30 5513
原创 TCP/IP、Http、Socket的区别
网络由下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性,socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/
2016-06-16 23:40:03 552
转载 TCP连接中的三次握手四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:三次握手首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 四次挥手假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说”我C
2016-06-16 23:09:26 424
原创 DrawNode绘制几何图形
继承关系 // 创建一个DrawNode Size visibleSize = Director::getInstance()->getVisibleSize(); DrawNode* drawNode = DrawNode::create(); drawNode->setPosition(Vec2(visibleSize.width * 0.5f,visibleSize.
2016-06-07 00:46:53 1423
原创 Cocos2d-x 面试题解
1、Cocos2d-x是怎样实现跨平台?AppDelegate作为跨平台程序入口,在这之上做了另一层的封装,封装了不同平台的不同实现。比如我们通常认为一个程序是由 main 函数开始运行,那我们就去找寻,我们看到了在 proj.linux 目录下存在 main.cpp 文件。在main.cpp 中 CCApplication::sharedApplication()–>run(); 这一句看起,这一
2016-06-05 16:31:15 4347
原创 多进程和多线程
我们都知道进程是操作系统资源分配的最小单位,而线程是CPU调度的最小单位。 先说说多线程的好处: (1)可以把占据时间长的任务放到后台去执行; (2)比如当用户点击按钮触发一个事件后,可以使用界面的进度条显示处理的进度; (3)一个进程中有多个线程的话,可能相对的加快程序的执行;下面来对比一下多进程和多线进程在各方面的优劣: (1)数据共享和同步方面: 进程之间的数据是分开的,因此多进程
2016-05-27 18:38:39 593
原创 同步和异步的区别
在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。 而我们平时经常讨论的同步问题多发生在多线程环境中的数据共享问题。即当多个线程需要访问同一个资源时,它们需要以某种
2016-05-26 18:15:13 486
原创 原码、反码、补码详解
一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的 00000011 和 10000011 就
2016-05-26 17:56:14 380
原创 计算struct的大小
结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题.struct stu1{ int i; char c; int j;}先介绍一个相关的概念——偏移量。偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成员的
2016-05-23 13:51:53 4854
原创 C++保存json文件(使用jsoncpp库)
首先我们要确定要保存json文件的格式,只有事先确定json文件的格式,才能构造它。{ "age" : 24, "array" : [ { "cancel" : "取消", "loginfail" : "登录失败", "loginsuccess" : "登录成功", "ok" : "确定" }
2016-04-22 14:46:44 7438 2
原创 mac下安装SCons
SCons介绍scons是一个Python写的自动化构建工具,从构建这个角度说,它跟GNU make是同一类的工具。它是一种改进,并跨平台的gnu make替代工具,其集成功能类似于autoconf/automake 。scons是一个更简便,更可靠,更高效的编译软件。SCons下载Scons官方下载地址:http://scons.org/pages/download.htmlSCons安装1.打开
2016-04-20 13:42:44 5159
原创 Lua根据秒数返回时间串00:00:00
-- 根据秒数返回时间串function Tools:getTimeString(time) local hours = math.floor(time / 3600) local minutes = math.floor((time % 3600) / 60) local seconds = math.floor(time % 60) if(hours < 10)
2016-04-19 16:03:21 1785
原创 有关内存的GetMemory()函数
void GetMemory(char* p){ p = (char*)malloc(100);}void Test(){ char* str = NULL; GetMemory(str); strcpy(str,"Crash"); printf("str = %s",str);}/* 以上函数会导致出现崩溃并且造成内存泄漏,奔溃是因为str的值一直
2016-04-19 15:44:05 920
原创 #include <filename.h>和#include "filename.h"有什么不同?
#include <filename.h>// 表示从当前开发环境所设定的目录去寻找filename.h文件#include "filename.h"// 表示从当前用户工作环境所设定的目录去寻找filename.h文件
2016-04-19 15:14:47 1300
原创 头文件中#ifndef/define/endif的作用
防止头文件被重复引用,是格式如下:#ifndef _GAMEDATA_H_#define _GAMEDATA_H_class GameData{public:protected:private:};#endif// 如果使用以上格式,在别的头文件或实现文件中重复包含是不会报错的,如下所示:#include "GameData.h"#include "GameData.h"#in
2016-04-19 15:11:09 660
原创 strcpy与memcpy的区别
strcpy与memcpy的区别1.复制的内容不同:strcpy()只能复制字符串,而memcpy()可以复制任意内容,例如字符数组、整型、结构体、类等。2.复制的方法不同:strcpy()不指定长度,它遇到被复制字符串结束符”\0”才结束拷贝,所以容易溢出。 memcpy()则是根据其第三个参数决定复制的长度。3.用途不同:通常在复制字符串时用strcpy(),而需要复制其他类型数据时则
2016-04-18 19:09:56 851
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人