C++中字符串的几种表示方法及其深入理解
2014-05-05 10:30
901 查看
C++中表示字符串的两种类型:C字符串和string
一、C字符串,
1、表示字符串时,将字符串表示成一个基类型为char的一个数组,其中数组的最后一个元素一定是’\0’,为C字符串的结束标记,称为空字符; 以这种方式存储的字符串称为C字符串,故C字符串的本质是一个字符数组
2、C字符串变量的声明与赋值:
C字符串变量的声明
char s[len];//len是数组的长度,因为此C字符串变量的最后一个位置存储空字符,故其能存储的字符串的长度是len - 1;
C字符串变量的赋值:
(1)char s[10] = “hello”;//合法,此表示在声明字符串变量时就对字符串变量进行初始化, 而不是赋值操作;
(2)Char s[10];
S = “hello”;//非法,因为s[10]本质上是一个数组,所以不可以直接这样赋值;
(3)初始化C字符串的时候可以省略字符串的长度,此时C++会自动使C字符串变量的长度等于引号中字符串的长度加1;
Char[] = “hello world”;
(4)使用预定义函数strcpy(target_string, another_string);对target_string进行赋值;
例:char a[100] = “Hello World”;
Char b[100];
Strcpy(b, a);//此时将a 的值赋给了b;
Strcpy(target_string , another_string);的劣处:此函数不检查复制的字符串是否超过了字符串变量的长度(即target_string的长度),复制的b的值可能超过了b的长度;
(5)strcpy(a, b)的一个更安全的版本:strncpy(target_string, another_string, length);增加的第三个参数是指只能在C字符串another_string中复制的字符串的长度(包括\0字符);
注意:C字符串不能用=来赋值;特别注意,虽然可以对C字符串使用==,但是不能用==来比较两个C字符串的是否相等,这样的结果往往是错的;
<ctring>库中的函数:(注意使用cstring 函数库中的函数时不需要加using namespace std);
1.strcpy(a, b);和strncpy(a, b, length);同上;
2.Strcmp(c_string1, c_string2);此函数的作用是比较两个字符串是否相等;若相等,函数的返回值为false,若不相等,函数的返回值是true;比较机制:字符串比较的依据是字典顺序,从第一个开始检索若c_string1的值小于c_string2的值,则比较结束,并返回一个负数;若c_string1的值大于c_st
4000
ring2的值,则返回一个正数,此时两字符串不同即为返回true,当两字符串相等时函数的返回值是0,即为false; strncmp(char *string_1, char *string_2, length)注意此时第三个参数指的是要比较的最大字符数;;例如: char a[10] = "asdd";
char b[19] = "asddsa";
cout << strncmp(a, b, 4) << endl;此时输出的结果是0,即比较的两个字符串的前4为相同,返回值为0,false;
3.
未完~
一、C字符串,
1、表示字符串时,将字符串表示成一个基类型为char的一个数组,其中数组的最后一个元素一定是’\0’,为C字符串的结束标记,称为空字符; 以这种方式存储的字符串称为C字符串,故C字符串的本质是一个字符数组
2、C字符串变量的声明与赋值:
C字符串变量的声明
char s[len];//len是数组的长度,因为此C字符串变量的最后一个位置存储空字符,故其能存储的字符串的长度是len - 1;
C字符串变量的赋值:
(1)char s[10] = “hello”;//合法,此表示在声明字符串变量时就对字符串变量进行初始化, 而不是赋值操作;
(2)Char s[10];
S = “hello”;//非法,因为s[10]本质上是一个数组,所以不可以直接这样赋值;
(3)初始化C字符串的时候可以省略字符串的长度,此时C++会自动使C字符串变量的长度等于引号中字符串的长度加1;
Char[] = “hello world”;
(4)使用预定义函数strcpy(target_string, another_string);对target_string进行赋值;
例:char a[100] = “Hello World”;
Char b[100];
Strcpy(b, a);//此时将a 的值赋给了b;
Strcpy(target_string , another_string);的劣处:此函数不检查复制的字符串是否超过了字符串变量的长度(即target_string的长度),复制的b的值可能超过了b的长度;
(5)strcpy(a, b)的一个更安全的版本:strncpy(target_string, another_string, length);增加的第三个参数是指只能在C字符串another_string中复制的字符串的长度(包括\0字符);
注意:C字符串不能用=来赋值;特别注意,虽然可以对C字符串使用==,但是不能用==来比较两个C字符串的是否相等,这样的结果往往是错的;
<ctring>库中的函数:(注意使用cstring 函数库中的函数时不需要加using namespace std);
1.strcpy(a, b);和strncpy(a, b, length);同上;
2.Strcmp(c_string1, c_string2);此函数的作用是比较两个字符串是否相等;若相等,函数的返回值为false,若不相等,函数的返回值是true;比较机制:字符串比较的依据是字典顺序,从第一个开始检索若c_string1的值小于c_string2的值,则比较结束,并返回一个负数;若c_string1的值大于c_st
4000
ring2的值,则返回一个正数,此时两字符串不同即为返回true,当两字符串相等时函数的返回值是0,即为false; strncmp(char *string_1, char *string_2, length)注意此时第三个参数指的是要比较的最大字符数;;例如: char a[10] = "asdd";
char b[19] = "asddsa";
cout << strncmp(a, b, 4) << endl;此时输出的结果是0,即比较的两个字符串的前4为相同,返回值为0,false;
3.
未完~
相关文章推荐
- C++ 字符串的几种表示方法
- C++ 图的几种表示方法解析
- C++ 深入理解 字符串 和 数组
- C++中的几种字符串输入输出方法
- 【ThinkingInC++】71、深入理解字符串
- guava深入理解(3)-字符串,实用方法,函数式编程
- 几种c/c++中字符串转整形的方法
- 几种c/c++中字符串转整形的方法
- 几种c/c++中字符串转整形的方法
- 阶乘的几种表示方法及其拓展
- C++中输入字符串的几种方法
- 深入理解字符串的反转及其延伸
- 几种C++ 字符串分割的方法
- 几种c/c++中字符串转整形的方法
- C++:CString、TCHAR、WCHAR 字符串等转BSTR的几种方法。
- C字符串与C++字符串的深入理解
- 浮点性(float)转化为字符串类型 自定义实现和深入探讨C++内部实现方法
- C++中输入字符串的几种方法
- c++ 字符串带双引号的表示方法
- 浮点性(float)转化为字符串类型 自定义实现和深入探讨C++内部实现方法