JAVA与C++区别(二):字符串

1:C风格字符串被定义为以null字符结尾的字符数组。如:char str[6]="hello"相当于实现:char str[]={'h','e','l','l','o','\0','}

由于字符串常量是按照字符数组形式存储的,编译器用存储第一个字符的内存地址来表示它,更准确的说是:const char *.我们可以直接用字符指针表示:

    char *str="hello";  //第一个字符的地址被存储在指针变量str中。

  常用C函数:int strcmp(const char *arg1,const char *arg2)

        size_t strlen(const char *arg);

        char * strcopy(const char* arg,const char* arg2)

        malloc();

2:对于C++的字符串:C++具有内建的字符串类型。

  创建C++字符串的方式:

  string str("hi there");       //调用string类的构造函数,并把“hi there”作为它的const char* 参数

  string str="hi there";      //在表达式的右边,可以看作它创建一个无名的string对象,并通过string类的拷贝构造函数把它的值赋给变量str

  string *p=new string("hi there");//调用new操作符获得一个指向一个string对象的指针。

  访问单个字符:(1)可以用数组下标[],(2)str.at();.两者区别,前者不会进行范围检查。

  字符串的比较:str1.compare(str2);如果str1大于str2,返回一个正值。如果等于,返回0。如果小于,返回负值。

C++中定义了qsort()函数。qsort是快速排序的一种实现方式,函数原型:

  void qsort(void *base,size_t nmenb,size_t size,int (*compar)(const void*,const void*));

其中参数base是指向需要排序数组的第一个元素的指针。nmenb是需要排序的元素数量。size是每个元素所占字节数。最后一个参数compar,它是一个函数指针,指向用户定义的函数,这个函数用于对数组中任意两个元素进行比较。绑定到compar的用户定义函数必须返回Int类型并且两个参数必须是void*.

   关于sizeof:      string s1="hello";

          string s2="there";

          sizeof(s1)和sizeof(s2)的结果为4.即储存指针的4个字节数。

       而: sizeof("hello");sizeof("hello there")前者返回6,后者返回12;

3:JAVA字符串

  JAVA提供了两个类String和StringBuffer来表示字符串和完成字符串的处理。

posted on 2011-03-13 14:01  鲁大山  阅读(2303)  评论(0编辑  收藏  举报

导航