学习C++
ai7090
这个作者很懒,什么都没留下…
展开
-
(转)C++两个类相互包含引用的问题
两个类相互包含引用的问题在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型[code="c++"]class A{ int i; B b;}class B{ int i; A* a;}[/code]请注意上面的定义内容,一般情况下是不能出现...原创 2011-12-12 18:46:30 · 100 阅读 · 0 评论 -
(转)在VS2005下使用libjson注意事项
最近项目中要使用libjson,无奈boost下的1.34版的property_tree 太不给力的。作为补充方案尝试使用libjson。1. 但是下载下来后首先发现是VS2008才能够用的。用文本编辑器将 其中的9.0修改为8.0 2. 在DEBUG模式下需要在 Prepprocessor --> preprocessor defination ...原创 2012-07-17 15:31:33 · 240 阅读 · 0 评论 -
(装)NDK Build 参数
'ndk-build' Overviewndk-build概述I. Usage:一、使用方法:The Android NDK r4 introduced a new tiny shell script, named 'ndk-build', to simplify building machine code.Android NDK r4引入一个新的小型she...原创 2012-07-17 16:20:20 · 91 阅读 · 0 评论 -
c++解析csv文件
针对unix跟windows平台,换行符不同,造成的问题,对csv解析进行了一些修改。。。[code="c++"]/** * 解析完的数据放到data这个二维数组中,通过getData(int rows,int cols) * 获取数据 **/#ifndef _CSVPARSE_#define _CSVPARSE_#include "cocos2...原创 2012-03-15 18:41:27 · 323 阅读 · 0 评论 -
cocos2d-x CCAnimate获取当前帧
cocos2d的CCAnimate本身没有获取当前是第几帧的函数,网上看了几个获取当前帧的方法感觉都不对,就自己写了一个[code="c++"]int CCAnimate::getCurFrameIndex(){ CCMutableArray *pFrames = m_pAnimation->getFrames(); unsigned int numberOfF...原创 2012-03-17 14:34:02 · 173 阅读 · 0 评论 -
对于c++ getline方法跨平台的问题
对于windows平台,换行是\r\n,而unix平台是\r,因为把windows平台下的文件,放到unix下来解析就会有问题,一种很逊的解决方法bool getline(std::ifstream &is,std::string &str){ bool b = std::getline(is,str); std::string::size_type p = str.find_...原创 2012-03-24 17:53:46 · 204 阅读 · 0 评论 -
jpg转成png文件时遇到的问题
今天从网上下载一个一个jpg文件,要把他改成png文件,嫌麻烦,就直接把后缀给改掉了,在windows看图片貌似没有问题。然后把文件放到cocos2d工程里面进行读取,返回的指针始终为NULL,最近断点跟进去,发现是这个断言出了问题[code="c++"]CC_BREAK_IF(png_sig_cmp(header, 0, 8));[/code]后来一查,原来这个函数是检查pn...原创 2012-03-27 00:19:21 · 441 阅读 · 0 评论 -
(转)子类重新父类方法的限制
若想实现一个合格重写方法,而不是重载,那么必须同时满足下面的要求! A、重写规则之一:重写方法不能比被重写方法限制有更严格的访问级别。 (但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限。) 比如:Object类有个toString()方法,开始重写这个方法的时候我们总容易忘记public修饰符,编译器当然不会放过任何教训我们 的机会。出错的原因就是:...原创 2012-07-23 15:17:53 · 138 阅读 · 0 评论 -
android平台移植总结
最近完成了一款游戏的android平台移植,从ios平台移植到android平台,使用的框架是cocos2d-x,有几个点总结一下1:刚移植的时候,出现了一个状况,就是当layer上面有ccmenuitemimage时,你点击layer的任一地方,程序就会crash掉,花了三天的时候去解决这个问题,实在找不到原因,网上也有人遇到这样的问题,但是没有解答,没有办法,最后把cocos2d-x的...原创 2012-07-30 13:11:40 · 160 阅读 · 0 评论 -
CCTMXTiledMap使用的几个事项
项目中的地图层采用cocos2d-x中的CCTMXTiledMap,我们的整个tile层采用的是一个大整图,然后对里面的tile进行分格子,而且这些tile只有在一个整图上才能使用ccbatchnode 。CCTMXTiledMap默认是不抗锯齿的,就是采用的是setAliasTexParameters,这一点可以在CCTMXLayer的setupTiles方法里进行设置的[cod...原创 2012-08-02 11:12:58 · 213 阅读 · 0 评论 -
cocos2d-x 声音播放
[code="c++"]#ifndef SGR_SoundPlay_h#define SGR_SoundPlay_h#include "cocos2d.h"class SoundPlay { public: SoundPlay(); ~SoundPlay();public: static SoundPlay& I...原创 2012-04-18 18:22:18 · 96 阅读 · 0 评论 -
jni文件传递方法参数
使用jni从java传递多个参数到c++时,如果是多个参数,当是string类型时,参数之间用;分割[code="c++"] void sendToAndoridAdmobId(const char* id) { JniMethodInfo methodInfo; if (!JniHelper::getStaticMethodInfo(...原创 2012-11-26 17:43:56 · 229 阅读 · 0 评论 -
C++哲学
即:只为用到的东西付出代价。原创 2013-01-10 20:34:32 · 215 阅读 · 0 评论 -
(转)string替换所有指定字符串(C++)
C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。首先明白一个概念,即string替换所有字符串,将"12212"这个字符串的所有"12"都替换成"21",结果是什么?可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,代码...原创 2013-07-27 17:01:07 · 1043 阅读 · 1 评论 -
(转)c++ explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:[code="c++"]class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“he...原创 2013-09-11 18:51:31 · 119 阅读 · 0 评论 -
C++ stl中remove的实现
原文:http://www.cplusplus.com/reference/algorithm/remove/c++98中的实现:template ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val){ ForwardIterator result = ...原创 2013-09-24 23:14:05 · 312 阅读 · 0 评论 -
(转)C语言字节对齐
文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数...原创 2014-09-23 16:16:29 · 112 阅读 · 0 评论 -
C语言字节对齐示例
#include "stdafx.h"struct MyStruct1{};struct MyStruct2{ char a;};#pragma pack(2)struct MyStruct3{};struct MyStruct4{ char a;};#pragma pack()struct...原创 2014-09-23 16:44:39 · 124 阅读 · 0 评论 -
Visual Studio 2010 'snprintf': identifier not found
snprintf is not part of C89. It's standard only in C99. Microsoft has no plan supporting C99.(But it's also standard in C++0x...!)You could still use[code="c++"]#if _MSC_VER#define snpri...原创 2012-02-23 22:21:31 · 523 阅读 · 0 评论 -
cocos2d-x Scene变换效果
[code="c++"]#ifndef _EFFECT_#define _EFFECT_#include "cocos2d.h"using namespace cocos2d;enum SceneTransitionEffect { NORMAL, GRID, //部落格 SW...原创 2012-02-17 18:20:19 · 115 阅读 · 0 评论 -
(转)cocos2d 坐标系使用
GL坐标系Cocos2D以OpenglES为图形库,所以它使用OpenglES坐标系。GL坐标系原点在屏幕左下角,x轴向右,y轴向上。屏幕坐标系苹果的Quarze2D使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下。ios的屏幕触摸事件CCTouch传入的位置信息使用的是该坐标系。因此在cocos2d中对触摸事件做出响应前需要首先把触摸点转化到GL坐标系。可以使用CCD...原创 2012-02-16 13:51:26 · 116 阅读 · 0 评论 -
(转)C++中map,hash map常用操作
1。目录map简介map的功能使用map在map中插入元素查找并获取map中的元素从map中删除元素2。map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 3。map的功能自动建立Key - value的对应。key 和 valu...原创 2011-12-16 15:31:33 · 583 阅读 · 1 评论 -
(转)C++ Vector 删除指定元素
原文地址:http://topic.csdn.net/t/20050803/16/4186421.html1、remove并不是删除,仅仅是移除,要加上erase才能完成删除。 2、remove并不是删除指定位置的元素,而移除所有指定的元素。 3、用algorithm代替成员函数不是一个好的选择。remove只是简单地用"未删除"对象来填补被删除对象留下的缺口,每一...原创 2011-12-16 15:32:41 · 136 阅读 · 0 评论 -
ios c++ 调用oc代码
今天照猫画虎的用c++调用了一段oc代码,需要注意的一点是为了混编,.cpp文件后缀要改为.mm,其他的就按照oc跟c++语法使用就是了[code="c++"]//// MKStoreForCpp.h//#ifndef SGR_MKStoreForCpp_h#define SGR_MKStoreForCpp_hclass MKStoreForCpp {...原创 2012-05-08 14:12:33 · 258 阅读 · 0 评论 -
C++求和
[code="java"]//============================================================================// Name : C++Demo.cpp// Author : 7090// Version :// Copyright : Your copyright no...原创 2011-11-09 10:35:50 · 421 阅读 · 0 评论 -
C++键盘输入求和
[code="C++"]//============================================================================// Name : C++Demo.cpp// Author : 7090// Version :// Copyright : Your copyright not...原创 2011-11-09 11:02:33 · 550 阅读 · 0 评论 -
(转)C语言深入浅出可变参数函数的使用技巧
深入浅出可变参数函数的使用技巧本文主要介绍可变参数的函数使用,然后分析它的原理,程序员自己如何对它们实现和封装,最后是可能会出现的问题和避免措施。VA函数(variable argument function),参数个数可变函数,又称可变参数函数。C/C++编程中,系统提供给编程人员的va函数很少。*printf()/*scanf()系列函数,用于输入输出时格式化字符串;exe...原创 2012-05-23 15:04:35 · 101 阅读 · 0 评论 -
C/C++ 指针删除的几个细节
在C/C++中,当指针需要删除时,对于new的指针,调用delete就可以删除 比如[code="c++"]int* p = new int(17);delete p;[/code]有时候为了避免使用错误,一般在delete之后,将p置为NULL,即[code="c++"]int* p = new int(17);delete p;p = NULL;[/c...原创 2012-05-23 15:44:46 · 593 阅读 · 0 评论 -
对c++方法返回对象的理解
今天更深刻的认识到了通过方法返回一个对象或者数组是不可以的,因为c++在方法结束的时候,对对象跟数组资源已经进行了释放,所以再使用已经释放的资源错误是未知的,[code="c++"]P getP(){ P p; return p;}[/code]同样如果返回的该对象或数组的指针是不行的,因为资源也被释放了,指针指向的是已经释放了的资源[co...原创 2012-05-25 11:51:04 · 124 阅读 · 0 评论 -
(转)C/C++ 结构体的一个高级特性 ―― 指定成员的位数
原文:http://blog.donews.com/21cnbao/archive/2006/10/07/1054807.aspx在大多数情况下,我们一般这样定义结构体:struct student{ unsigned int sex; unsigned int age;};对于一般的应用,这已经能很充分地实现数据了的“封装”。但是,在实...原创 2011-11-17 15:09:28 · 102 阅读 · 0 评论 -
c++指针跟数组的主要区别
最近学习c++,看到《高质量c++/c编程指南》的内存分配那一章,讲到数组跟指针的区别,觉得有必要记录一下,以便后查看指针跟数组的区别主要有三个:1:修改内容 数组可以随意修改其中某一项的内容,只要不超过数组的边界就可以了。而对于指向常量的指针则不可以进行修改,尽管从语法上进行修改并没有什么不妥,但是在运行会导致错误。另外说一点,对于越界操作的数组跟指针,虽然结果是未知的,但是语法上却...原创 2011-11-30 18:21:23 · 120 阅读 · 0 评论 -
(转)cocos2d-x解析json(使用libjson库)
cocos2d-x很好,扩展性很好,但是其第三方库还不是很成熟,正如王哲所说,需要我们自己寻找,比如json解析和格式化。我们的网络部分需要用到json,网络部分用的比较多的就是json,毕竟很轻量级么。。。上午我看到cocos2d-x论坛里关于json的第三方库有人提到了两个,一个是jsoncpp,一个是libjson,我上午首选的是jsoncpp,看其编译过程,是比较复杂的,我...原创 2012-06-06 11:26:53 · 122 阅读 · 0 评论 -
c++ 字符串的一些概念
今天看到《c++ primer》上关于字符串的介绍,才惊讶的发现自己之前的很多观念是错误的,现有项目的一些细节也忽略了1:释放数组指针记得是使用 delete [] pia,虽然早就知道这一点,但是在项目中有时候还是忘记数组指针的释放方法,很轻易的就使用 delete pia进行指针的释放,造成内存泄露了,对于多维数组pia[][],或者类似形式的int** pia = new int[...原创 2012-06-13 00:16:21 · 150 阅读 · 0 评论 -
cocos2d-x初学习
1:字符串绘制 cocos2dx的字符串绘制使用的是Label,cocos2dx并不直接支持在屏幕中绘制字符串(这是有道理的,因为我们不能直接把一个string做成一个节点,那样很难理解),如果要直接绘制的话,可以自己封装opengl函数(网上有很多例子,一般是用texture做)。其实最简单的绘制例子就是最开始的那个Helloworld。核心代码如下:[code="c++"]...原创 2012-02-09 13:56:19 · 77 阅读 · 0 评论 -
vs2010更改Additional Include Directories
[b]directory[/b] The directory to be added to the list of directories searched for include files.[b]Remarks[/b]To add more than one directory, use this option more than once. Directorie...原创 2012-02-11 22:26:09 · 377 阅读 · 0 评论 -
cocos2d-x,windows环境配置总结
按照网上的教程配置完以后,主要遇到了两个问题,首先第一个是在建立一个新的cocos2d-x工程之后,点击build,提示错误信息[code="c++"] fatal error C1083: Cannot open include file: 'CCStdC.h': No such file or directory[/code],原因是因为没有找到cocos2d的那些头文件,找了半天,终于找到了...原创 2012-02-11 23:15:56 · 121 阅读 · 0 评论 -
cocos2d-x横竖屏坐标系转换
在RootViewController.mm文件中,进行修改1:默认横屏// Override to allow orientations other than the default landscape orientation.- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interf...原创 2012-02-15 09:52:27 · 232 阅读 · 0 评论 -
(转)C++ string类的一些函数方法
[size=small][b]string类的构造函数:[/b]string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出len...原创 2012-10-24 14:41:40 · 203 阅读 · 0 评论 -
C++正则表达式匹配、分割字符串
#include "stdafx.h"#include #include #include using namespace std;int main(){ std::string s("abcd12_efgh34"); std::regex e("abcd(\\d+)_efgh(\\d+)"); std::smatch sMatchResult;...原创 2017-11-14 16:32:33 · 5564 阅读 · 0 评论