Symbian C++ 手机编程中的字符串处理和标准 C/C++ 有很大的不同,它提供了一种安全、有效的机制来处理串和二进制数。

通过比较C相对于Symbian OS中对串的不同处理来认识描述符,字符串有如下几种不同的存储方式:

1.    将字符串放在程序代码段中,这样的字符串是不能发生更改的

在C中可以表示为:

char* stringInRom= “Hello”;

相应的代码在symbian OS为:

_LIT(KStringRom, “Hello”);

TPtrC stringInRom = KStringRom;

其中_LIT是一个宏,它定义了一个存储在程序代码中的名字为KString的描述符,其值为”Hello”。TPtrC是一个两个字长的对象,它既包含指针,也包含长度,该语句将该串的指针和长度都拷贝给了stringInRom。这里的C在TPtrC中的含义就是constant.

2. 将串中的内容拷贝到栈中

在C中:

char stringInStack[7]

strcpy(stringInStack, stringInRom);

在symbian os 中:

TBufC<7> stringInStack(KStringRom);

TBufC<7>是一个可以存储7个字节的描述符,这个对象包含一个字(2Bytes)大小的头,表示其长度为7,后面跟着7个字节的数据,这里的C仍是constant的意思。

3. 将串中内容放到堆中

在C中

char* stringInHeap = (char*)malloc(7 * 2);

strcpy(stringInHeap, stringInRom);

在symbian Os中:

HBufC* stringInHeap : KStringRom().AllocLC();

HBufC* 是一个指向基于堆存储的描述符的指针,通过在KStringRom()将其转化为所有描述符的基类TDesC。该基类提供了AllocLC()方法,该方法在缺省堆中申请了所需大小的HBufC,并将原描述符的内容拷贝到HBufC中,AllocLC还将HBufC*压入到CleanupStack中,我们可以使用CleanUpStack::PopAndDestroy()来删除HBufC。

symbian目前有五种具体的描述符:TPtr, TBuf, TPtrC, TBufC, HBufC,他们都是从TDesc继承而来。按照可以更改和不可以更改数据来分,描述符可以分为一下两大类:

a.       可以更改数据的描述符:TPtr和TBuf,从TDes继承而来,而TDes也是从TDestC继承而来。

b.       不可以更改数据的描述符:TPtrC和TBufC和HBufC,他们都是从TDesC继承而来。

4. 描述符的操作和使用

TDes和TDesC是其它描述符的基类,symbian提供了许多对字符串进行操作的的方法:

a.       指针转换方法
PtrZ()可以帮你找到指向描述符数据的字符串指针,返回值为TUInt16*或TUInt8*,并且在数据的末尾加一零作为结束符,可以实现和C++标准库中的字符串之间的转换。

b.       提取方法

TDesC的Left(), Right()和Mid()方法可以提取一个串的任何部分

c.  搜索方法
   TDesC的Locate()和Find()方法可以进行区别或不区别大小写的前向或反向的搜索。

d.  比较方法

Comapre()用于字节的比较

e.        设置方法

SetLength()允许将长度设置为0-MaxLength()之间的任一值,SetMax()将长度设置为最大值。

f   操作数据

TDes的Trim()方法将数据头部和尾部的空格全部删除

Copy()方法将数据拷贝至描述符,并覆盖原有数据

Append()方法,在描述符末尾追加数据

Insert()方法,将数据插入串的任何位置

Delete()方法,可以删除从任意位置开始连续的数据。

http://wanliqunn.blog.163.com/blog/static/986517920087146431929/

Symbian C++手机编程中字符串处理相关推荐

  1. python文本字符分析、编写程序接收字符串_python 文本分析Python编程中字符串和列表的基本知识讲解...

    Python 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var ...

  2. labview 转标准c语言,LabVIEW编程之字符串转换为双精度数

    下面我们就Labview编程中字符串转换为双精度数问题进行详细分析: 大家都知道两点之间最近的路径是直线,遗憾的是程序员往往走的并非直线. 这是用户的程序框图: 分析用户的程序框图: 用户的目的是字符 ...

  3. Symbian S60v5 编程中的程序图标更换问题

    这个换图标的问题也是折腾了我挺久一段时间,非常郁闷,不就换个图标嘛,想当年大学时在MFC编程中,多么简单的一件事件,在Symbian下却搞了很久,在网上查了很久,发现基本都是说第三版或者是Anna下换 ...

  4. unity3d shader编程中GrabPass 在某些android手机上失效的解决方案

    unity3d shader编程中GrabPass 在某些android手机上失效的解决方案 参考文章: (1)unity3d shader编程中GrabPass 在某些android手机上失效的解决 ...

  5. java 打印abcd_用JAVA编程统计字符串ABCD123!@#$%ab中大写字母、小写字母、数字、其它字符的个数并打印出来...

    /** * 编程统计字符串"ABCD123!@#$%ab"中大写字母.小写字母.数字.其它字符的个数并打 印出来. */ public class Job1Test { publi ...

  6. 【编程帮助】python中字符串前的 r、b、u、f 的含义及用法

    针对实战中遇到的字符串前加有字母的情况而不知道它们的具体作用进行总结 一.字符串前加 r :去除转义字符 二.字符串前加 b : 表示该字符串是一个 bytes 对象 三.字符串前加 u :将该字符串 ...

  7. c语言编程字符串_C编程中的字符串

    c语言编程字符串 Strings in C programming are an array of characters with a NULL character ('\0') appended a ...

  8. 2. Python函数式编程中的字符串,元组,函数的分类,高阶函数,一篇文章都介绍一遍

    函数式编程中的字符串 在函数式编程中,经常用到 Python 字符串,因其是不可变数据结构. 字符串本身是一个对象,具备很多对象方法,与常识中函数的使用不太相同,例如下述代码 my_str = &qu ...

  9. 手机编程环境初尝试-用AIDE开发Android应用

    前不久才接触到纯粹用手机进行编程的开发者, 当时颇有孤陋寡闻之感, 因为之前听说过手机编程还是一些在线编程学习网站开发的学习环境, 没有想过真的有用它做实际开发的. 此文用AIDE免费版在自己的手机上 ...

最新文章

  1. 综合-某假期欢乐赛 (Apri, 2018)
  2. sql注入——day01
  3. python 按从小到大的顺序组合成一个字典_Python实现字典排序、按照list中字典的某个key排序的方法示例...
  4. Spring Cloud异常
  5. socket编程(一)最简单的c/s模式
  6. 新能源外地车进京限行限号政策是怎样的?
  7. 凑数算法 c语言,算法题解 - 牛客编程巅峰赛S1第4场 - 黄金钻石组
  8. LOTO 示波器 两种电流探头的对比实测
  9. 计算机主机接口有哪些,主机接口有哪些
  10. GPU 编程与CG 语言之阳春白雪下里巴人——CG学习读书笔记之数学函数(三)
  11. 案例教程:一步步教你ps制作二寸照片
  12. 2023第八届少儿模特明星盛典 福州赛区 初赛圆满收官
  13. 多线程因__lll_unlock_elision 导致core
  14. 生成棋盘格(标定板图片)
  15. Hackthebox(1)系列持续更新
  16. 在线秒表 - 在线计时器 - 在线记时器
  17. Web全栈~05.CSS属性
  18. spring data redis 配置
  19. 欺骗的艺术----(9)
  20. python股票接口_小小- python用雅虎财经(yahoo)接口写简易爬虫获取A股上证所有股票(可以单独选择个股)历史数据...

热门文章

  1. 【python绘图】——删除多余的图例【图示说明】
  2. 2008年MBA全国联考英语考试大纲
  3. 大三下对过去一年多的回顾
  4. JSP Taglib指令具有什么功能呢?
  5. Angular4_使用枚举
  6. Docker Daemon
  7. linux查看gc日志,将GC日志输出到文件
  8. php框架语法,PHP框架之ThinkPHP框架
  9. 统计学中的均值、方差、协方差
  10. 树莓派三种连接电脑的方式