c++ 标准库string类型

先区别一下:

string 是c++语言的标准库

string.h c语言标准库

cstring c语言标准的c++版本

1)初始化:

string s1;//默认构造函数,s1为空串

string s2(s1);

string s3("value");

string s4(n,'c');//将s4初始化为'c'的n个副本

 

2)读写

用标准输入输出来读写string对象cin,cout

getline(istream cin,string str);读取整行文本存放到str中

 

3)string对象的操作

s.empty()  //s为空返回true,否则返回false

s.size()  s.length()    //返回s中字符个数

s[n]  //s中第n个字符

s1+s2  //字符串连接

s1=s2  //字符串赋值

v1==v2  //字符串比较

!=,<,<=

>,>=

size()函数返回值为size_type类型,这时string库类型的配套类型(companion type)。通过这些配套类型,库类型的使用就能与机器无关(machine_independent)。size_type定义与unsigned含义相同。

 

4)string对象中字符的处理,以下函数存放在cctype中,参数c为int型

isalnum(c) 参数c是一int型数,其ASCII码若为0-9或a-z或A-Z则返回true

isalpha(c) c的ASCII码若为字母,返回true

iscntrl(c)  c的ASCII码若为控制字符,返回true

isdigit(c)  数字

isgraph(c) c不是空格,但可打印,返回true

islower(c) 小写字母

isprint(c) 是可打印字母

ispunct(c) 标点符号

isspace(c) 空白字符

isupper(c) 大写字母

isxdigi(c) 16 进制数

tolower(c) 若c为大写字母则返回其对应小写,否则返回c

toupper(c) ...

 

5)字符串还有一种实现形式:字符数组

对于用字符串字面值赋值的一维字符数组,在字符串字面值的末尾编译器会自动添加一个'\0'(NULL)。 所以像char c[10];最多存放9个字符。

像char c[]={'c','+','+'};这样没有NULL,char c[10]={'c','+','+'};这样有NULL。

对于下面几种情况:

A)char s[5]="1234"; for(int i=0;s[i]!=NULL;i++)cout<

B)char s[4]=''1234";  ....//编译时错误"1234"需要长度为5的数组

C)string s="1234"; ....//编译时不报错,运行时有异常。因为这种实现方式s[4]不存在,字符数组是有一个NULL的。

 

6)cstring中的一些string函数

strlen(s) //s可以是string也可以是char*,不包含末尾的'\0'

//以下s均为char *s;

strcpy(s,s1)

strncpy(s,s1,n)

strcat(s,s1)

strncat(s,s1,n)

strcmp(s,s1)

strncmp(s,s1,n)

 

7)另外在cstdlib中的函数

char s[];

double atof(s) //将char *转换为double数

int atoi(s)

long atol(s)

 

//有新认识会继续补充

char *c;是c++继承自c语言的字符串风格。

const char * c_str(string);该函数将string类型字符串转换为char* c类型;

 

 

 

你可能感兴趣的:(c/c++,c++,string)