- 浏览: 694009 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (440)
- c++学习笔记 (89)
- 如何适应变化 (1)
- VC常见问题 (7)
- Brew开发12月9日至12月26日 (1)
- 软件架构 (3)
- 自己动手写C语言编译器之文档翻译工作 (1)
- 自己动手写C语言编译器 (6)
- 网站资源 (1)
- 郝彬英文教程 (1)
- 45度斜角地图 (0)
- 35.264等角视图 (0)
- 30等角视图 (1)
- 如何搞opengl (1)
- 卷积。 (1)
- Android解析日记 (5)
- Linux基础教学 (9)
- Android游戏框架 (9)
- Android游戏开发之OpenGL之坐标矩阵 (2)
- Android异常处理 (1)
- 资源网站 (1)
- ARM汇编学习 (1)
- game (0)
- 自己动手实现OpenGL(准备开始!后面有空补充) (3)
- 云计算 (1)
- Android面试题目 (17)
- 深度学习 (1)
- OpenGL实践 (1)
- 神经网络学习-翻译 (4)
最新评论
-
3482561:
Android 面试题目之 线程池 -
daojin:
直接布局。
安卓高手之路之图形系统(6)requestLayout的流程 -
hety163:
没明白楼主所说的最后两段。如果一个相对布局中有多个子view, ...
安卓高手之路之图形系统(6)requestLayout的流程 -
jackuhan:
100篇!!!膜拜
安卓高手之路之 图形系统之 图形框架(1) -
ritterliu:
不错,按照流程把关键代码都贴出来了。谢谢分享
Android输入输出系统之TouchEvent流程
#pragma once #include <string> template<class T> void SwapFun(T& left, T& right) { T temp = left; left = right; right = temp; } class CShString { public: CShString(char* pStr) :m_iLen(strlen(pStr)) , m_iMaxSize(CalcuMax(m_iLen)) , px(new char[m_iMaxSize]) , pn(new int(1)) { memcpy(px, pStr, m_iLen + 1); } CShString(char* pStr, int iLength) :m_iLen(iLength) , m_iMaxSize(CalcuMax(iLength)) , px(new char[m_iMaxSize]) , pn(new int(1)) { ASSERT(iLength == strlen(pStr)); memcpy(px, pStr, m_iLen); px[m_iLen] = '\0'; } CShString(const CShString& strOther) : px (strOther.px), pn(strOther.pn); { ++*pn; } CShString& Assign(const CShString& other) { Swap(CShString(other.Data(), other.GetLength())); return *this; } CShString& Assign(const char* pStr) { Swap(CShString(pStr)); return *this; } CShString& Assign(const char* pStr, int ilength) { Swap(CShString(pStr, ilength)); return *this; } CShString& Append(const CShString& other) { int nSize = GetLength() + other.GetLength() + 1; char* pStr = new char[nSize]; memcpy(pStr, Data(), GetLength()); memcpy(pStr + GetLength(), other,Data(), other.GetLength() + 1); ResetAs(pStr, nSize); } CShString& Append(const char* pOther) { int nLen = strlen(pOther); int nSize = GetLength() + nLen + 1; char* pStr = new char[nSize]; memcpy(pStr, Data(), GetLength()); memcpy(pStr + GetLength(), pOther, nLen + 1); ResetAs(pStr, nSize); } CShString& Append(const char* pStr, int ilength) { int nSize = GetLength() + ilength + 1; char* pStr = new char[nSize]; memcpy(pStr, Data(), GetLength()); memcpy(pStr + GetLength(), pStr, ilength + 1); ResetAs(pStr, nSize); } ~CShString(void) { if (--*pn == 0) { delete pn; delete px; } } const char* Data() const { return px; } int GetLength() { return m_iLen; } private: void ResetAs(char* pStr, int iSize) { if (--*pn == 0) { delete pn; delete px; } m_iMaxSize = CalcuMax(iSize); m_iLen = iSize - 1; px = pStr; pn = new int(1); } void Swap(CShString& other) { SwapFun(m_iLen, other.m_iLen); SwapFun(m_iMaxSize, other.m_iMaxSize); SwapFun(px, other.px); SwapFun(pn, other.pn); } static int CalcuMax(int iLen) { int i = 0; while (INIT_MAX_LEN + (i++) * DELTA_LEN < iLen + 1){} return INIT_MAX_LEN + (i - 1) * DELTA_LEN; } static const int INIT_MAX_LEN = 100; static const int DELTA_LEN = 20; int m_iLen; int m_iMaxSize; char* px; int* pn; };
发表评论
-
Camera框架初探
2012-12-28 00:26 2674先解释一些概念,然后带着思考去解读 1.CameraServ ... -
打印一个字符串的所有排列。
2011-07-24 18:04 1182//打印一个字符串的所有排列。void printSequen ... -
快速排序
2011-04-16 21:26 960#include <stdio.h> #inclu ... -
ubuntu配置Android指南
2011-04-09 04:46 1463您还未登录!|登录|注册|帮助 CSDN首页资讯论坛博客下载搜 ... -
linux ubuntu mount success
2011-04-05 22:13 4030wangshuai@wangshuai-virtual-ma ... -
ubuntu VMware
2011-04-05 15:00 811http://www.linuxidc.com/Linux/2 ... -
Android源代码获得方法
2011-04-03 19:58 1000http://www.williamhua.com/2009/ ... -
什么是页表和页目录
2011-03-27 21:49 13844G内存分解为1M个内存页。 1K个页组成一个页表。 1K个页 ... -
pure abstract class(什么是纯抽象类?)
2011-03-18 22:55 1218下面是C++的创造者的回答,供你参考 Bjarne Stro ... -
自动化Build的方法如下所示
2011-02-05 23:43 1301#本文件自动进行build ... -
批处理
2011-02-04 17:19 1239批处理之家: http://www.bathome.n ... -
自己写的share_ptr + Arry 来制作CString共享版本
2011-02-03 01:54 1630#include "MyStudyFile.h&qu ... -
自己写的share_ptr
2011-02-01 23:43 3098#pragma once namespace WSBoo ... -
什么叫做坐标系的平移和旋转.
2011-01-16 10:35 3207坐标系是个什么概念呢: X,Y,Z的轴坐标, ... -
总结一下这几天操作符的学习心得
2010-12-11 20:43 9461.关于map的operator[]:原形为 val_type ... -
函数返回应该是个右值吧,为啥能放在左边(红色标示的部分)?
2010-11-17 16:18 12411楼 class A1 { public: A ... -
优点和缺点
2010-11-13 19:52 727优点:非常爱学习,为人很大方。做事很投入,很刻苦。 缺点是: ... -
游戏开发框架
2010-11-09 21:57 1116class m_eventManger { }; c ... -
键盘消息
2010-11-08 20:50 992void CqjgzDlg::OnBnClickedWin ... -
总结一下通信方面的工作
2010-11-06 12:47 9211.网络通信主要包括通信的建立,通信的正常进行,以及断开。以及 ...
相关推荐
`HString`类可能结合了上述一种或多种策略,以实现比`CString::Replace`更高效的字符串替换功能。使用自定义字符串类可以提供更好的性能控制,尤其是在需要大量字符串处理的项目中,这样的优化尤为重要。 为了评估`...
`CString`的引入极大地提高了开发效率,特别是在MFC项目中,对于字符串的操作变得更加简便和高效。 #### 二、`CString`的基本使用 **初始化与赋值:** ```cpp // 使用字符串字面量初始化 CString gray("Gray"); ...
### CString与UTF-8之间的转换方法 在C++编程中,尤其是在使用Microsoft Foundation Classes (MFC)库进行...此外,考虑到性能问题,对于频繁的字符串转换操作,可以考虑使用更高效的数据结构或算法优化转换过程。
【描述】:这篇指南详细介绍了如何在C++编程中高效使用CString类,包括字符串连接、格式化、不同类型之间的转换、与控件交互以及性能优化等多个方面。通过学习,开发者可以更好地理解和运用CString在MFC环境中处理...
尽管标题提到"CString的源码",但描述指出这不是MFC版本的`CString`,而是其基础实现。这里我们将深入探讨`CString`的基本概念、实现原理以及它在C++中的应用。 `CString`类是为了解决C++标准库中的`std::string`在...
`CString`类的设计目标是提供一个高效且易用的字符串管理工具,其性能优于传统的C风格字符串(char*)。下面我们将深入探讨`CString`类以及其中涉及到的"Copy on Write"(写时复制)技术。 首先,让我们理解`...
通过这种方式,可以高效地访问到字符串内容。 #### 2. 构造函数与析构函数 `CString`提供了多种构造函数来创建不同的字符串实例: - `CString();`:默认构造函数,创建一个空字符串。 - `CString(const CString& ...
CString 是 MFC 框架中用于处理字符串的一种非常高效且方便的数据类型。它极大地简化了许多与字符串相关的操作,尤其是在需要进行字符串连接时。例如: ```cpp CString strGray("Gray"); CString strCat("Cat"); ...
在Microsoft Foundation Classes ...总的来说,`CString`是MFC中处理字符串的强大工具,它提供了丰富的操作方法和与其他类型的转换手段,使得字符串操作变得简单高效。理解并熟练掌握这些操作对于进行MFC编程至关重要。
### MFC字符串CString操作用法详解 #### 一、引言 Microsoft Foundation Classes (MFC) 是一套由微软开发的类库,它...在实际开发过程中,熟练掌握这些函数的使用方法,能够帮助我们更加高效地完成字符串相关的任务。
在VC++编程环境中,字符串处理是非常常见的任务,而CString是Microsoft MFC(Microsoft Foundation Classes)库提供的一种方便、高效的字符串类。它提供了丰富的成员函数,用于处理和操作字符串。在这个主题中,我们...
`CString`是MFC(Microsoft Foundation Classes)中的一个类,用于在Windows环境中高效地处理字符串。与标准C++库中的`std::string`不同,`CString`提供了更多的功能和更好的性能,特别是在处理宽字符和Unicode字符...
在C++编程中,`CString`是一个非常重要的字符串类,...通过增强其功能、提高安全性以及考虑不同环境下的兼容性,我们可以创建一个更加高效和易用的字符串类。在实践中,不断迭代和完善,将有助于提升代码质量和维护性。
由于字符串处理在软件开发中极为常见,因此`CString`类因其高效、灵活的特点而受到广泛欢迎。 #### 字符串模板类 `CStringT` `CStringT`是一个模板类,支持多种字符类型,包括`TCHAR`、`char`以及`wchar_t`。这...
《Cstring的全面解析》 Cstring是C++中用于处理字符串的一种类,它提供了...无论是在日常开发还是解决特定问题时,Cstring都能提供强大而高效的支持。希望本文的解析能帮助你更好地运用Cstring,提升代码质量与效率。
相比于传统的C风格字符串操作,如使用`strcpy()`和`strcat()`,使用CString的连接操作更安全、更高效。 **2. 格式化字符串** CString提供了`Format()`方法,类似于C语言的`sprintf()`,可以方便地将各种类型的数据...
在MFC中,`CString`类提供了一种高效且安全的方式来管理字符串数据。相比于原始的`char *`或`char[]`数组,`CString`不仅提供了更多的字符串操作方法,还自动管理内存,避免了常见的内存泄漏和缓冲区溢出问题。 将`...
`CString`提供了多个版本的`Find`函数,用于查找字符或子串的位置: - `int Find(TCHAR ch) const;` - `int Find(LPCTSTR lpszSub) const;` - `int Find(TCHAR ch, int nStart) const;` - `int Find(LPCTSTR ...
这比使用传统的C风格字符串进行连接(如使用`strcpy`和`strcat`)更为高效和安全。 2. **格式化字符串** 使用CString的`Format()`方法,可以方便地进行字符串格式化,类似于C语言中的`sprintf`。例如,将整数转换...
【标题】:深入理解CString数据格式 ...总之,了解 CString 的工作原理,尤其是其内存管理和字符串引用的机制,对于编写高效且安全的 MFC 代码至关重要。通过深入学习,可以避免常见的错误,提高代码的稳定性和性能。