C++基础知识(二) 字符串
2014-06-26 19:20
155 查看
字符串就是内存中存储的一连串字符,C++和C玉缘本身都不支持字符串这种数据类型,但是C语言支持字符数组,简介支持了字符串;而C++标准库带有string类,也简介支持了字符串。C++是C语言的超集,因此,可以认为C++间接支持两种字符串:C风格的字符串和string字符串。由于历史原因,在实际编程时,多数程序员喜欢使用C风格的字符串。
字符集指的是字符串中每个字符在内存中存储时的编码格式,Windows操作系统支持三种编码格式:单字节字符集、多字节字符集和双字节字符集。
单字节字符集(简称SBCS)中每个字符用1字节表示,用于表示英文字符。
多字节字符集(简称MBCS)一般用于亚洲语系。英文字符用1个字节表示,中文用2个字节表示。
双字节字符集(简称DBCS)中的每一个字符都用2字节表示,UNICODE是典型的双字节字符集。每个字符无论中英文都用2个字节存储。
C/C++规定,C风格的字符串就是以字符‘ \0 ’结尾的字符数组。字符‘ \0 ’的ASCII码是数字0,因此也可以将C风格的字符串理解为以数字0结尾的字符数组。在代码中,字符串常量是用双引号括起来的一串字符。
C风格的字符串定义和存储有以下两种形式:
1、使用字符型指针:
eg1:char *str = "你好 C++"; // 多字节字符集
eg2:wchar_t * str2 = L"吃饭了吗?"; // 双字节字符集,前缀加字母L
2、使用字符数组:
eg1:char sName[] = "郭靖"; // 不使用{},多字节字符集
eg2:char sCity[] = {"北京"}; // 使用{},多字节字符集
eg3:wchar_t sAddr [] = {L"黄土高原"}; // 双字节字符集,前缀加字母L
注:上述代码中,sName、sCity和sAddr三个字符串的末尾都有一个数字0,这回占用一个元素的位置,因此在用数组定义和存储字符串时,一定要保证数组的元素个数够用。也可以像上面那样,不指定数组个数,由编译器自动计算。
常用的字符串操作函数:
字符串复制函数:strcpy、wcscpy
字符串连接函数:strcat、wcscat
字符串查找函数:strstr、wcsstr
以上函数中,以w开头的是针对双字节字符集的。另外,在使用以上函数时,需要包含string.h头文件。
示例:
运行结果:
字符集指的是字符串中每个字符在内存中存储时的编码格式,Windows操作系统支持三种编码格式:单字节字符集、多字节字符集和双字节字符集。
单字节字符集(简称SBCS)中每个字符用1字节表示,用于表示英文字符。
多字节字符集(简称MBCS)一般用于亚洲语系。英文字符用1个字节表示,中文用2个字节表示。
双字节字符集(简称DBCS)中的每一个字符都用2字节表示,UNICODE是典型的双字节字符集。每个字符无论中英文都用2个字节存储。
C/C++规定,C风格的字符串就是以字符‘ \0 ’结尾的字符数组。字符‘ \0 ’的ASCII码是数字0,因此也可以将C风格的字符串理解为以数字0结尾的字符数组。在代码中,字符串常量是用双引号括起来的一串字符。
C风格的字符串定义和存储有以下两种形式:
1、使用字符型指针:
eg1:char *str = "你好 C++"; // 多字节字符集
eg2:wchar_t * str2 = L"吃饭了吗?"; // 双字节字符集,前缀加字母L
2、使用字符数组:
eg1:char sName[] = "郭靖"; // 不使用{},多字节字符集
eg2:char sCity[] = {"北京"}; // 使用{},多字节字符集
eg3:wchar_t sAddr [] = {L"黄土高原"}; // 双字节字符集,前缀加字母L
注:上述代码中,sName、sCity和sAddr三个字符串的末尾都有一个数字0,这回占用一个元素的位置,因此在用数组定义和存储字符串时,一定要保证数组的元素个数够用。也可以像上面那样,不指定数组个数,由编译器自动计算。
常用的字符串操作函数:
字符串复制函数:strcpy、wcscpy
字符串连接函数:strcat、wcscat
字符串查找函数:strstr、wcsstr
以上函数中,以w开头的是针对双字节字符集的。另外,在使用以上函数时,需要包含string.h头文件。
示例:
#include <IOSTREAM> #include <STRING.H> // 包含字符串函数的头文件 using namespace std; int main (int argc, char* argv[]) { char str[100] = {"我们都知道"}; char sName[20] = {0}; char sSay[20] = {0}; strcpy(sName, "王立"); // 将字符串“王立”复制到sName中 cout << "sName的内容是:" << sName << endl; strcat(sSay, "人很好"); // 将字符串“人很好”连接到sSay cout << "sSay的内容是:" << sSay << endl; strcat(str, sName); // 将字符串sName连接到str cout << "str的内容是:" << str << endl; // 在字符串sName中查找str // NULL是系统内置的常量,置为0,多用于初始化空指针 if (strstr(str, sName) != NULL) { cout << "没错,说的就是" << sName << endl; } return 0; }
运行结果:
sName的内容是:王立 sSay的内容是:人很好 str的内容是:我们都知道王立 没错,说的就是王立
相关文章推荐
- C++中的字符串基础知识
- C++中的字符串基础知识
- C++的基础知识(十六)--在字符串copy函数中引入辅助指针变量
- [C++ 面试基础知识总结]字符串,向量和数组
- C++基础知识复习--字符串
- C/C++基础知识总结——数组、指针域、字符串
- 【基础知识】c++字符串中需要注意的一些细节
- 您需要注意的c++ 的11个要点[转贴] 基础知识
- 关于HOOK基础知识(windows API ,C++)
- [C++]基础知识备忘(1)
- pascal→→c++常用基础小知识
- 汇编基础知识 - [C/C++]
- C++ 人工智能算法系列一(神经网络算法基础知识)
- C++ 基础小知识学习[1]
- C++相关基础知识(转贴)
- c++基础知识
- C++学习(3)--基础知识(3)--关于操作符的重载
- c/c++基础(一) 字符串系列-外加mem处理
- C++学习笔记——基础知识
- 基础知识C++