首页 > 编程知识 正文

cmap2名称,cmap资料

时间:2023-05-03 05:21:42 阅读:41050 作者:3494

CMap帮助标头:

afxtempl.h

CMap格式:

templateclass KEY,class ARG_KEY,class VALUE,classarg _ valueclasscmap :公共对象

key :用作key的类型。 整数型、浮点型等)

ARG_KEY:Key的值

VALUE:用作VALUE的类型

arg _ value :用作value的值参数:

用作地图键码的KEY对象的类。 ARG_KEY参数KEY使用的数据类型。 通常是KEY的参照。 VALUE存储映射中对象的类。 ARG_VALUE参数VALUE使用的数据类型。 通常是对VALUE的引用。

LPCSTR和CString的区别LPCTSTR类型:

l表示长指针,它是为了与16位操作系统(如Windows 3.1 )兼容而保留的,在win32和其他32位操作系统中,长指针、近端指针和传真修饰符是兼容的没有实际意义。

p表示这是指针

c表示是常数

t表示Win32环境中有_T宏

STR将此变量转换为字符串详细释义

此宏指示您的字符是否使用了UNICODE。 如果您的程序定义了UNICODE或其他相关宏,此字符或字符串将被视为UNICODE字符串。 否则,它是标准的ANSI字符串。

因此,LPCTSTR表示一个字符串,其指定可以根据多个宏定义改变意义的固定地址。

程序大部分时间使用带t的类型定义。

LPCTSTR==const TCHAR *

可以说CString和LPCTSTR是共同的。 原因是CString定义的自动类型转换,没有任何奇怪之处,只是最简单的c操作符重载。

常量字符串ansi和unicode的区别由宏_T决定。 但是,如果使用_t(「abcd”),则字符串' ABCD '取决于在编译时是否定义_UNICODE是char*还是w_char*。

为了简单起见,我只介绍ansi的情况。 unicode可以类推。

对于ansi,LPCTSTR是const char*,是常量字符串(不能修改)。

另一方面,LPTSTR是char*,它是常规字符串(非常大量,可以修改)。

两者都是基本类型,但CString是c类。 使这两种基本类型兼容是最低限度的任务。

const char*是最简单、常数、内存无变化、操作快速的,因此CString定义了直接类型转换函数。

操作器lpctstr (

{。

.

}

函数直接返回被维护的字符串。

lkdfj需要const char* (在传递CString时,c编译器会自动调用CString重载的操作符LPCTSTR )进行隐式类型转换。

如果需要CString,并且传递了const char*,则c编译器会自动调用CString的构造函数来生成临时CString对象。

因此,CString和LPCTSTR几乎是共同的。

但是,LPTSTR又不是。 我是char*。 这意味着您可以随时更改中的数据,并且需要内存管理(如果字符串越长,原始存储空间就越少,则需要重新调整分配内存)。

所以,不能将const char*强制转换为char*使用。

例如:

lpstrlpstr=(lpstr ) ) LPCTSTR ) string;

这种不安全的使用方法。

这里使用的是强制型转换。 你强制转换了。 C编译器当然不会拒绝你,但同时他认为他知道你要做什么。 所以我不会警告你。

的任意类型转换是c ()的有力之处,但也是一大弊端。 vc6及更高版本(仅限vc )逐步改善了此问题。 需要更明确的类型转换声明。

其实很多地方都可以看到类似lpstrlpstr=(lpstr ) ) LPCTSTR ) string的东西; 使用方法如下。 这种情况一般是函数约束定义不够充分的原因。 例如,如果某个函数接受字符串参数的输入,但其中对该字符串没有任何修改,则应该将该参数定义为const char*,但很多初学者不知道如何使用const,或者是否懈怠,总之是擅自使用char* 如果这个情况传到CString,就需要强制转换。

这种做法不安全,也是没有建议的使用方法。 必须完全理解和确认字符串没有被修改。

CString将转换为lptstr(char* ),并计划调用CString的GetBuffer函数。 如果已使用,则通常需要调用ReleaseBuffer函数来确认修改。 (在某些情况下,可能不调用发行缓冲器。 同样,我们需要非常明确为什么要这样做。 典型的APP应用环境

另外,请注意,在GetBuffer和ReleaseBuffer之间,CString无法调用其他CString函数,因为CString将分配内存供您处理。

//CString到LPCTSTR:CString cStr; const char *lpctStr=(LPCTSTR ) cStr; //LPCTSTR到CString:LPCTSTR lpctStr; CString cStr=lpctStr;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。