C++ 字符串类,字符串变量与字符串数组
2017-02-26 15:58
246 查看
在C语言中,应用字符串需要定义字符数组,字符串需要存放在字符数组中。然后利用各种字符串操作函数对其操作。
http://blog.csdn.net/chaipp0607/article/details/56676791
但是这种方式存在一些弊端,比如字符数组的大小是固定的,在进行字符连接或字符复制时,需要计算字符串与字符数组的长度,否则就可能发生一部分字符超出数组范围。
为此,C++提供了一种新的数据类型——字符串类型(string),实际上在C++的基本数据类型中并不包含string,他是在C++标准库中声明的一个字符串类,用这个类实现字符串的定义。
在定义string型变量时,需要加上
注意:不是string.h,因为该头文件为C语言的,并没有string类型,具体的介绍在上文链接中有。
定义与赋值
使用字符串类后,可以直接使用string类型定义字符串,此时string与C++基本数据类型(int,double等)相比并没有区别。
定义并初始化:
先定义后初始化:
利用字符数组时,可以这样定义和初始化一个字符串:
但是先定义后初始化是错误的
因为str3不是字符串变量,而是数组名。
字符串类型操作
在使用字符数组时,我们需要用各种操作函数实现字符串操作,比如strcat等,但是应用字符串类后,可以使用简单的运算符即可完成操作。
在上面的程序中可以看到,复制直接使用“=”,连接使用“+”,关系运算使用==(等于),>(大于),<(小于),!=(不等于),>=(大于等于)。这是因为在string头文件中已经对这些运算符进行了重载,使他们能用于string类对象的运算。
http://blog.csdn.net/chaipp0607/article/details/55281496
其中大于或小于的比较与字符串比较函数 strcmp 的功能是相同的,大小的依据是直到出现第一个不同的字符时,比较该字符的ASCII码大小。
字符串数组
既然string类型与基本数据类型没什么区别,那么也可以用string定义字符数字。
注意:
(1)一个字符串数组中可以包含若干个元素,每一个元素相当于一个字符串变量。
(2)并不要求元素都有相同的长度。
(3)字符串数组中的每一个元素的值只包含字符串本身的字符而不包括“\0”。
http://blog.csdn.net/chaipp0607/article/details/56676791
但是这种方式存在一些弊端,比如字符数组的大小是固定的,在进行字符连接或字符复制时,需要计算字符串与字符数组的长度,否则就可能发生一部分字符超出数组范围。
为此,C++提供了一种新的数据类型——字符串类型(string),实际上在C++的基本数据类型中并不包含string,他是在C++标准库中声明的一个字符串类,用这个类实现字符串的定义。
在定义string型变量时,需要加上
#include <string>的头文件。
注意:不是string.h,因为该头文件为C语言的,并没有string类型,具体的介绍在上文链接中有。
定义与赋值
使用字符串类后,可以直接使用string类型定义字符串,此时string与C++基本数据类型(int,double等)相比并没有区别。
定义并初始化:
string str="chaibubble";
先定义后初始化:
string str1; str1 ="chaibubble";
利用字符数组时,可以这样定义和初始化一个字符串:
char str2[11] = "chaibubble";
但是先定义后初始化是错误的
char str3[11]; str3 ="chaibubble";
因为str3不是字符串变量,而是数组名。
字符串类型操作
在使用字符数组时,我们需要用各种操作函数实现字符串操作,比如strcat等,但是应用字符串类后,可以使用简单的运算符即可完成操作。
string str1="chai"; string str2; str2 ="bubble"; string str3 =str2; string str4 =str1+str3; if (str3==str2) { cout<<"str3==str2"<<endl; } if (str1!=str2) { cout<<"str1!=str2"<<endl; } if (str1>str2) { cout<<"str1>str2"<<endl; }
在上面的程序中可以看到,复制直接使用“=”,连接使用“+”,关系运算使用==(等于),>(大于),<(小于),!=(不等于),>=(大于等于)。这是因为在string头文件中已经对这些运算符进行了重载,使他们能用于string类对象的运算。
http://blog.csdn.net/chaipp0607/article/details/55281496
其中大于或小于的比较与字符串比较函数 strcmp 的功能是相同的,大小的依据是直到出现第一个不同的字符时,比较该字符的ASCII码大小。
字符串数组
既然string类型与基本数据类型没什么区别,那么也可以用string定义字符数字。
string shuzu[4] = {str1,str2,str3,str4};
注意:
(1)一个字符串数组中可以包含若干个元素,每一个元素相当于一个字符串变量。
(2)并不要求元素都有相同的长度。
(3)字符串数组中的每一个元素的值只包含字符串本身的字符而不包括“\0”。
相关文章推荐
- c++中怎样将字符数组转化成字符串变量
- C/C++学习之C提高----C数组的定义、类型、定义数组指针变量、多维数组的本质、多维数组做函数参数、将两个数组中的字符串copy到第三个数组
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- c++中怎样将字符数组转化成字符串变量...?
- C/C++中关于字符串数组与字符串常量
- C++字符串完全指南(2) - 各种字符串类(一)
- (31)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第六节
- (32)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第七节
- (27)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第二节
- c++中的字符串变量
- 字符数组名与字符串指针变量名的区别(转)
- (26)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第一节
- C++ 用qsort()实现字符串数组元素排序
- C++ 固长字符串数组动态分配
- c++字符串中的变量
- c++学习笔记2——指向字符串的指针数组?
- (30)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第五节
- C++字符串完全指南(2) - 各种字符串类- CRT类
- (34)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第九节
- C/C++面试之算法系列--不申请变量和空间反转字符串