1,本文分析 C++ 中的字符串,C 语言中的字符串利用的是 C 语言中的字符数组, 在 C 语言中没有真正意义上的字符串,利用了字符数组表示了字符串,最初设 计 C 语言仅仅是为了开发 Unix 操作系统,而开发操作系统要处理的仅仅是数 据本身,关于字符串的处理很少,所以说当时没有在 C 语言中内置一个字符串 现在绝大多数都是在用 C 语言开发应用程序,而开发应用程序中对字符串的处 理是非常多的,如果还是用字符数组表达字符串,一定会使得开发效率大大下 降,因此在 C++ 中有必要引入字符串的概念,不仅仅是用字符数组来模拟,而 是真正意义上的字符串;
2,历史遗留问题:
1,C 语言不支持真正意义上的字符串;
1,C++ 也不支持;
2,C 语言用字符数组和一组函数实现字符串操作;
1,C++ 同样支持;
3,C 语言不支持自定义类型,因此无法获得字符串类型;
1,C++ 支持自定义类型,因此可以获得字符串类型;
3,解决方案:
1,从 C 到 C++ 的进化过程引入了自定义类型;
2,在 C++ 中可以通过类完成字符串类型的定义;
4,C++ 中的原生类型系统是否包含字符串类型?
1,不包含;
5,标准库中的字符串类:
1,C++ 语言直接支持 C 语言的所有概念;
2,C++ 语言中没有原生的字符串类型;
3,C++ 标准库提供了 string 类型:
1,string 直接支持字符串连接;
1,重载 “+”;
2,string 直接支持字符串的大小比较;
1,重载大小操作符,可以对字符串进行排序;
3,string 直接支持子串查找和提取;
4,string 直接支持字符串的插入和替换;
5,查阅 C++ 标准库文档;
6,字符串类的使用编程实验:
1,main.cpp 文件:
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 void string_sort(string a[], int len) 7 { 8 for(int i=0; i<len; i++) 9 { 10 for(int j=i; j<len; j++) 11 { 12 if( a[i] > a[j] ) // string 类重载了 “>”; 13 { 14 swap(a[i], a[j]); 15 } 16 } 17 } 18 } 19 20 string string_add(string a[], int len) 21 { 22 string ret = ""; 23 24 for(int i=0; i<len; i++) 25 { 26 ret += a[i] + "; "; // string 类重载了 “+=” 和 “+”; 27 } 28 29 return ret; 30 } 31 32 int main() 33 { 34 string sa[7] = 35 { 36 "Hello World", 37 "D.T.Software", 38 "C#", 39 "Java", 40 "C++", 41 "Python", 42 "TypeScript" 43 }; 44 45 string_sort(sa, 7); 46 47 for(int i=0; i<7; i++) 48 { 49 cout << sa[i] << endl; 50 } 51 52 cout << endl; 53 54 cout << string_add(sa, 7) << endl; 55 56 return 0; 57 }
2,输出结果:
1 C# 2 C++ 3 D.T.Software 4 Hello World 5 Java 6 Python 7 TypeScript 8 9 C#; C++; D.T.Software; Hello World; Java; Python; TypeScript;
3,C++ 中没有必要使用字符数组模拟字符串了,直接使用标准库中的 string 类型;
7,标准库中的字符串类:
1,字符串与数字的转换:
1,标准库中提供了相关的类对字符串和数字进行转换;
1,基于字符串流类 sstream 来进行转换;
2,sstream 类诞生的目的就是为了支持字符串和数字之间的相互转换;
2,字符串流类(sstream)用于 string 的转换:
1,<sstream> - 相关头文件;
&