先区别一下:
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类型;