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来表示字符串和完成字符串的处理。