在C++中,字符串的表示方式有两种:1、从C语言继承过来的C风格字符串;2、C++特有的string类型。在C++程序中,应尽量使用string类型,因为C风格字符串常常带来许多错误,是导致大量安全问题的根源。
字符串字面值:例如 "hello"、“123abc”等,它是以空字符‘’结束
C风格字符串:即以空字符‘’结束的字符数组,例如char a[ ] ="hello"; 等价于 char a[ ] = {'h', 'e', 'l', 'l', 'o', ''};
1、C风格字符串的使用
因为C风格字符串本质上是一个字符数组,因此可以采用类似于数组的操作(如下标操作)来操纵。其次,C++语言通过(const)char*类型的指针来操纵C风格字符串,一般使用指针的算术操作符来遍历C风格字符串。例如:
在此之前,先弄明白:
char a[ ] ="hello"; //C风格字符串
char *b = a;//定义了一个char型指针b,它指向字符数组a的第一个元素
char *c ="hello";//定义了一个char型指针c,它指向字符串字面值“hello”的第一个元素
再看(const)char*类型的指针来操纵C风格字符串:
constchar * cp = "some value";
while(*cp){
//do sth
++cp;
}
2、C风格字符串的标准库函数
头文件:#include<cstring>
strlen(s) | ......(函数功能,此处省略) |
strcmp(s1, s2) |
|
strcat(s1, s2) |
|
strcpy(s1, s2) |
|
strncat(s1, s2, n) |
|
strncpy(s1, s2, n) |
|
3、C风格字符串与数字的转换 atoi 与itoa函数
头文件:#include<cstblib>
例如:atoi(“1234”) 返回结果1234;原型:int atoi(const char *nptr);
int value = 1234;
char str[20];
itoa(value, str, 10); //返回结果”1234”
char *itoa( int value, char*str, int radix);[1]
原型说明:
value:欲转换的数据。
Str:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制等。
标准string类:在库<string>中定义,其定义包含在std命名空间内
头文件:#include<string>
1、 用string类进行字符串处理
采取与访问数组一样的方式来访问string对象中的字符
2、 string标准类的成员函数
构造函数 | ......(函数功能,此处省略) |
string str |
|
strint str(“sample”) |
|
string str(a_string) |
|
元素访问 |
|
str[i] |
|
str.at(i) |
|
str.substr(position,length) |
|
赋值、修改 |
|
str1 = str2; |
|
str1+= str2; |
|
str.empty() |
|
str1 + str2 |
|
str.insert(pos, str2); |
|
str.remove(post, length); |
|
比较 |
|
== != < > <= >= |
|
查找 |
|
str.find(str1) |
|
str.find(str1,pos) |
|
str.find_first_of(str1,pos) |
|
str.find_first_not_of(str1,pos) |
|
长度 |
|
str.length() |
|
String对象与C风格字符串之间的转换:
1、 string 转C
char a_cstring[] = “hello”;
string b_string;
b_string =a_string; //正确,但反过来错误
2、 C转string
Strcpy(a_cstring,b_string.c_str()); //其中c_str()为string的成员函数,返回与string调用对象对应的一个C字符串
最后
以上就是朴实小丸子最近收集整理的关于C风格字符串与string类型(整理)的全部内容,更多相关C风格字符串与string类型(整理)内容请搜索靠谱客的其他文章。
发表评论 取消回复