c++

本文精选了C++编程中的实用技巧,包括字符串处理、文件操作、内存管理等关键知识点,适用于初学者和有一定经验的开发者。



voidSprite3D::removeAllAttachNode()

{

   for (auto& it : _attachments) {  //std::unordered_map类型的循环

       removeChild(it.second);

    }

    _attachments.clear();

}

Sprite3DCache::Sprite3DData*Sprite3DCache::getSpriteData(conststd::string& key)const

{

    auto it =_spriteDatas.find(key);  //类型 std::unordered_map<std::string, Sprite3DData*> _spriteDatas; 搜索unordered_map

   if (it !=_spriteDatas.end())

       return it->second;

    return nullptr;

}



 std::string sl = "hello";
 std::transform(sl.begin(), sl.end(), sl.begin(), toupper);   

这样得到 sl 值是 大写的 HELLO

transform 是遍历一个容器里面元素 然后执行一个操作
第1和2个参数是数据起始和结束位置(迭代器)
参数3是写入目标的起始位置
参数4是执行的操作(函数)
 

std::transform(ext.begin(), ext.end(), ext.begin(), tolower);  //transform 是遍历一个容器里面元素 然后执行一个操作,这里执行的操作 tolower 大概是变小写的操作


----------------

#include <iostream>
using namespace std;
int main () {
char c;
int n;
char str[256];
cout << "Enter a number or a word: ";
c=cin.peek();
if ( (c >= '0') && (c <= '9') )
{
cin >> n;
cout << "You have entered number " << n << endl;
}
else
{
cin >> str;
cout << " You have entered word " << str << endl;
}
return 0;
}


其实就是 获取 第一个字符( 若把输入流比作一个 栈类 那么这里的peek函数就相当于栈的成员函数front
其功能是从输入流中读取一个字符 但该字符并未从输入流中删除


-----------------


strncmp 此函数功能即比较字符串str1str2的前maxlen个字符。


sscanf

 从一个字符串中读进与指定格式相符的数据
http://baike.baidu.com/link?url=YzkTk6SE6Xpti7riykv8a2--hspEXDSYKAs_1UcnXBvoWEmfl8bBxCfbaCUYnCPySyz6TWCSFux3gRxjdCxJyK


strspn(token, " \t");  //返回字符串中第一个不在指定字符串中出现的字符下标


strncpy

(c/c++)复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_tn的值决定。



::atof(buf); //把字符串转换成浮点数



\\ 反斜杠
  \a 警告
  \b 退格
  \f 换页
  \n 换行
  \r 回车
  \t 跳格搜索
  \v 垂直跳格
  \ddd ddd 是 1、2 或 3 位八进制数字。这些转义序列作为由八进制数指定的具有数字值的字节显示

strcspn

顺序在字符串s1中搜寻与s2中字符的第一个相同字符,包括结束符NULL,返回这个字符在S1中第一次出现的位置。




http://blog.youkuaiyun.com/youxin2012/article/details/9162415
string中 find()的应用  (rfind() 类似,只是从反向查找)

----------------------------------------
http://blog.youkuaiyun.com/qq575787460/article/details/8531397

memcmp是比较 内存 区域buf1和buf2的前count个字节。该 函数 是按 字节 比较的。
当buf1<buf2时,返回值<0
当buf1=buf2时,返回值=0
当buf1>buf2时,返回值>0



函数简介

函数原型:FILE * f open(const char * path,const char * mode);
返回值: 文件顺利打开后,指向该流的 文件指针就会被返回。如果 文件打开失败则返回NULL,并把 错误代码存在 error中。
一般而言,打开 文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在 fopen()后作错误判断及处理。
参数说明:
参数path 字符串包含欲打开的 文件路径及文件名,参数mode字符串则代表着流 形态


 fseek(fp,0,SEEK_END);

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置: 文件头 0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset( 指针 偏移量 )个字节的位置。如果执行失败( 比如 offset超过文件自身大小),则不改变stream指向的位置。



使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。
调用示例
ftell(fp);利用函数 ftell() 也能方便地知道一个文件的长。如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。






函数原型

size_t fread ( void * buffer , size_t  size , size_t  count , FILE * stream ) ;

参 数

buffer
用于接收 数据内存地址
size
要读写的字节数,单位是 字节
count
要进行读写多少个size字节的数据项,每个元素是size字节.
stream
输入流

返回值

实际读取的元素个数。如果返回值与 count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。



fclose是一个函数名,功 能是关闭一个流。注意:使用fclose()函数就可以把 缓冲区 内最后剩余的数据输出到磁盘文件中,并释放 文件指针 和有关的缓冲区。






memcmp是比较 内存 区域buf1和buf2的前count个字节。该 函数 是按 字节 比较的。
比较内存区域buf1和buf2的前count个字节。


void *memcpy(void *dest, const void *src, size_t n);
c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
函数返回指向dest的指针。


CCBundle3DData  绑定3D数据类


voidSprite3D::removeAllAttachNode()

{

   for (auto& it : _attachments) {  //std::unordered_map类型的循环

       removeChild(it.second);

    }

    _attachments.clear();

}

Sprite3DCache::Sprite3DData*Sprite3DCache::getSpriteData(conststd::string& key)const

{

    auto it =_spriteDatas.find(key);  //类型 std::unordered_map<std::string, Sprite3DData*> _spriteDatas; 搜索unordered_map

   if (it !=_spriteDatas.end())

       return it->second;

    return nullptr;

}



 std::string sl = "hello";
 std::transform(sl.begin(), sl.end(), sl.begin(), toupper);   

这样得到 sl 值是 大写的 HELLO

transform 是遍历一个容器里面元素 然后执行一个操作
第1和2个参数是数据起始和结束位置(迭代器)
参数3是写入目标的起始位置
参数4是执行的操作(函数)
 
 

std::transform(ext.begin(), ext.end(), ext.begin(), tolower);  //transform 是遍历一个容器里面元素 然后执行一个操作,这里执行的操作 tolower 大概是变小写的操作


----------------

#include <iostream>
using namespace std;
int main () {
char c;
int n;
char str[256];
cout << "Enter a number or a word: ";
c=cin.peek();
if ( (c >= '0') && (c <= '9') )
{
cin >> n;
cout << "You have entered number " << n << endl;
}
else
{
cin >> str;
cout << " You have entered word " << str << endl;
}
return 0;
}


其实就是 获取 第一个字符( 若把输入流比作一个 栈类 那么这里的peek函数就相当于栈的成员函数front
其功能是从输入流中读取一个字符 但该字符并未从输入流中删除


-----------------


strncmp 此函数功能即比较字符串str1str2的前maxlen个字符。


sscanf

 从一个字符串中读进与指定格式相符的数据
http://baike.baidu.com/link?url=YzkTk6SE6Xpti7riykv8a2--hspEXDSYKAs_1UcnXBvoWEmfl8bBxCfbaCUYnCPySyz6TWCSFux3gRxjdCxJyK


strspn(token, " \t");  //返回字符串中第一个不在指定字符串中出现的字符下标


strncpy

(c/c++)复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_tn的值决定。



::atof(buf); //把字符串转换成浮点数



\\ 反斜杠
  \a 警告
  \b 退格
  \f 换页
  \n 换行
  \r 回车
  \t 跳格搜索
  \v 垂直跳格
  \ddd ddd 是 1、2 或 3 位八进制数字。这些转义序列作为由八进制数指定的具有数字值的字节显示

strcspn

顺序在字符串s1中搜寻与s2中字符的第一个相同字符,包括结束符NULL,返回这个字符在S1中第一次出现的位置。




http://blog.youkuaiyun.com/youxin2012/article/details/9162415
string中 find()的应用  (rfind() 类似,只是从反向查找)

----------------------------------------
http://blog.youkuaiyun.com/qq575787460/article/details/8531397

memcmp是比较 内存 区域buf1和buf2的前count个字节。该 函数 是按 字节 比较的。
当buf1<buf2时,返回值<0
当buf1=buf2时,返回值=0
当buf1>buf2时,返回值>0



函数简介

函数原型:FILE * f open(const char * path,const char * mode);
返回值: 文件顺利打开后,指向该流的 文件指针就会被返回。如果 文件打开失败则返回NULL,并把 错误代码存在 error中。
一般而言,打开 文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在 fopen()后作错误判断及处理。
参数说明:
参数path 字符串包含欲打开的 文件路径及文件名,参数mode字符串则代表着流 形态


 fseek(fp,0,SEEK_END);

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置: 文件头 0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset( 指针 偏移量 )个字节的位置。如果执行失败( 比如 offset超过文件自身大小),则不改变stream指向的位置。



使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。
调用示例
ftell(fp);利用函数 ftell() 也能方便地知道一个文件的长。如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。






函数原型

size_t fread ( void * buffer , size_t  size , size_t  count , FILE * stream ) ;

参 数

buffer
用于接收 数据内存地址
size
要读写的字节数,单位是 字节
count
要进行读写多少个size字节的数据项,每个元素是size字节.
stream
输入流

返回值

实际读取的元素个数。如果返回值与 count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。



fclose是一个函数名,功 能是关闭一个流。注意:使用fclose()函数就可以把 缓冲区 内最后剩余的数据输出到磁盘文件中,并释放 文件指针 和有关的缓冲区。






memcmp是比较 内存 区域buf1和buf2的前count个字节。该 函数 是按 字节 比较的。
比较内存区域buf1和buf2的前count个字节。


void *memcpy(void *dest, const void *src, size_t n);
c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
函数返回指向dest的指针。



http://www.cnblogs.com/mr-wid/archive/2013/04/19/3029842.html
png_sig_cmp    

//检测该文件头是否为 png格式的图




2.从内存读取:

对于PNG格式,从内存读取要重设读取回调函数,然后用png_set_read_fn()函数指明读函数。

http://blog.youkuaiyun.com/bigapple88/article/details/5644418




malloc函数编辑malloc一般指malloc函数 

malloc的全称是memory allocation,中文叫 动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。原型为extern void *malloc(unsigned int num_bytes)。



C语言函数
头文件:malloc.h
作用:释放malloc()函数给指针变量分配的内存空间的函数
使用后该指针变量一定要重新指向NULL,防止野指针出现,有效 规避误操作。





CCBundle3DData  绑定3D数据类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值