char*,char[],string,cstring 转换

原文转自:http://blog.csdn.net/wangwanguo08/article/details/9125667

char*/char[]

     char*是字符指针类型。比如:char * pchar;则pchar就是一个指针,是一个指向字符地址的指针。对于char[]而言,可以把数组名当作char*类型来处理,所以我们把两者放在一起讨论。字符类型的指针与其它基本类型的指针之间有一个非常重要的区别,看下面这个程序:

     int age[]={11,2,33};

     char name[]="ZhangJian\0Ping";//用双引号引起的字符串给字符数组赋值时,系统会自动在最后加一个'\0',可以显式提供。

     int *pAge =age;//数组名是指向第一个数组元素的指针

     char *pName=name;//同上

     cout<<"输出pAge指针的值:"<<pAge<<endl; //pAge输出为0012FF60,为内存地址,即系统存储age数组第一个元素的地址,每次运行时都可能得到不同的值

     cout<<"输出pName指针的值:"<<pName<<endl;//pName永远输出为"ZhangJian"

     即若输出char类型的指针,实际输出的是从该地址开始,把连续的每个字节解释为字符输出,直至遇到'\0'为止,而不是根据数组的长度来确定的。这是C语言遗留的问题之一,因为在C++没有出现之前,C语言表示字符串就是用char数组(或char*)表示的,而要用char数组表示字符串,数组最后一个字符必须是'\0',这是字符数组合字符串之间地区别。这样的设计是为了方便操纵C风格的字符串。

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

cstring

     cstring不是一种类型,而是声明C++中处理C风格字符串的函数的头文件。看下面的一段代码:

     char nameA[]="Zhang";

     char nameB[]="Zhang";

     cout<<(nameA==nameB);//输出0

     所以不能想当然的使用基本操作符来操作C风格的字符串,其他操作还包括字符串的连接、比较、计算长度等。C语言(衍生到C++)提供了一系列处理字符串的函数,要使用它们,在C语言中必须包含<string.h>,而在C++中该头文件为<cstring>

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

string

     string类型是C++相对于C语言所特有的。string不是基本类型,而是一个类,提供了一系列用于操作字符串的函数,例如计算字符串长度、使用(==)比较字符串等等。string类型更适合我们的使用习惯,所以强烈建议在使用字符串的时候使用string类型

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

C风格字符串向string类型转换

     可以直接将C风格字符串赋值给string类型,例如以下代码:

     char * name = "ZhangJianPing";

     string names(name);

string类型向C风格字符串转换

     使用string类型提供的一个函数c_str(),该函数返回一个const char *类型的值。代码如下:

     string name("ZhangJianPing");

     const char* cname = name.c_str();

1.string 转 CString
       CString.format(”%s”, string.c_str());

2.char 转 CString
      CString.format(”%s”, char*);

3.char to string
    string s(char *);

4.string 转 char *
     char *p = string.c_str();

5.CString 转 string
      string s(CString.GetBuffer());

6.string -> CString
      CString.format(”%s”, string.c_str());
      用c_str()确实比data()要好.
7.CString -> string
      string s(CString.GetBuffer());
      GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
8.有三个函数可以将字符串的内容转换为字符数组和C—string
       1.data(),返回没有”\0“的字符串数组
        2,c_str(),返回有”\0“的字符串数组
       3,copy()

9.将字符转换为整数,可以使用atoi、_atoi64或atol。
10.将数字转换为CString变量,可以使用CString的Format函数

      CString s;
       int i = 64;
       s.Format(”%d”, i)
        Format函数的功能很强,值得你研究一下。

11.cstring TO char *
       charpoint=strtest.GetBuffer(strtest.GetLength());

12.CString转换 char[100]

      char a[100];
      CString str(”aaaaaa”);
       strncpy(a,(LPCTSTR)str,sizeof(a));

你可能感兴趣的:(C++,String,C语言,指针,CString)