C/C++字符串理解

来源:互联网 发布:unity3d摄像机自动缩放 编辑:程序博客网 时间:2024/06/06 03:13

1.“abcde" ,'a' 各代表什么?

答:”abcde“表示的是字符串常量,‘a'表示的是字符常量,他们都是常量,存储在常量区!!!,只是在使用时我们会经常使用这些常量给string对象进行赋值而已,但是他们并不是对象!

2.string对+的重载。

string类重载大量的+操作符,使得字符串连接很容易,其重载了与字符常量的+,与字符串常量的+,以及与string对象的+。下面举例说明:

string s1="abc";

string s2=s1+s2; //ok

string s3="def"+"ghi";  //error!!!!,"def"+"ghi"是错误的,因为字符串常量并没有定义这种+的重载!

string s4="def"+"ghi"+s1;  //error!!!,计算是从左到右的,先计算”def"+"ghi",由于此种类型的+没有定义,所以计算出错

string s5=s1+"fewf"+'a'; //ok s1+"fewf"的结果是一个string对象,然后此对象又与’a'字符常量进行计算,符合重载规则。

1.C风格的字符串是以NULL为结尾的字符数组.操作符[ ],*不能操作整个字符数组,但是由于串常常要被当做一个对象来处理,为了扩充语言的对串的处理能力,有一些库文件提供了这种功能

<string.h>:

  • int strlen(const char* p)
  • char* strcpy(char* p,const char* q);
  • char* strcat(char*p,const char* q);
  • int strcmp(const char* p, const char* q);
  • char* strstr(char* p,const char* q)//在p中找第一个q;

<stdio.h>:

  • atoi()/atof()等字符串转换函数

<ctype.h>:

  • 字符处理函数isalpha()/isupper()/toupper()等

2.“abc"是一个c风格的字符串,其内容包括3个字符和一个null结尾的终止符。其类型为const char*

2.C++中的<string>库对字符串的处理

tips:find()函数一个参数可以接受的是const char*型参数,但是传递string(”fefe“)这样的无名对象时也可以,就说明这里无名对象被隐式转换为了const char* ,相当于调用c_str()函数。

3.string类如何实现字符串转换为小写形式?

stl中是没有实现字符串大小写转换的,但是可以利用stl中的transform函数和c中的字符处理函数tolower来实习字符串小写化。

transform(s.begin(),s.end(),s.begin(),tolower);//参数时要转换的字符串的位置,转换后的目标起始位置,转换函数的指针。具体的转换方式就是遍历字符串,然后对每一个字符使用转换函数进行转换,放到目标位置。

原创粉丝点击