C++超详细讲解字符串类

发布时间:2026/6/10 8:56:21

C++超详细讲解字符串类 一、历史遗留问题C 语言不支持真正意义上的字符串C 语言用字符数组和一组函数实现字符串操作C 语言不支持自定义类型因此无法获得字符串类型二、解决方案从 C 到 C 的进化过程引入了自定义类型在 C 中可以通过类完成字符串类型的定义三、标准库中的字符串类C 语言直接支持 C 语言的所有概念C 语言中没有原生的字符串类型C 标准库提供了 string 类型string 直接支持字符串连接string 直接支持字符串的大小比较string 直接支持子串查找和提取string 直接支持字符串的插入和替换下面看一个字符串类的使用代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include iostream#include stringusingnamespacestd;voidstring_sort(string a[],intlen){for(inti 0; i len; i){for(intj i; j len; j){if(a[i] a[j]){swap(a[i], a[j]);}}}}string string_add(string a[],intlen){string ret ;for(inti 0; i len; i){ret a[i] ;;}returnret;}intmain(){string sa[7] {Hello World,AutumnZe,C#,Java,C,Python,TypeScript};string_sort(sa, 7);for(inti 0; i 7; i){cout sa[i] endl;}cout endl;cout string_add(sa, 7) endl;return0;}输出结果如下排序基于字典顺序进行。字符串类进行了大量的操作符重载所以 a[i] a[j] 以及ret a[i] ;; 都是可以的。字符串与数字的转换标准库中提供了相关的类对字符串和数字进行转换字符串流类 ( sstream ) 用于 string 的转换sstream -- 相关头文件istringstream -- 字符串输入流ostringstream -- 字符串输出流使用方法string -- 数字123istringstream iss(123.45);doublenum;iss num;数字 -- string123ostringstream oss;oss 543.21;string s oss.str();下面看一个字符串和数字转换的示例1234567891011121314151617#include iostream#include sstream#include stringusingnamespacestd;#define TO_NUMBER(s, n) (istringstream(s) n)#define TO_STRING(n) (((ostringstream)(ostringstream() n)).str())intmain(){doublen 0;if(TO_NUMBER(234.567, n)){cout n endl;}string s TO_STRING(12345);cout s endl;return0;}输出结果如下C 中还可以通过模板技术进行字符串和数字转换这里先用宏来实现。四、字符串循环右移示例 abcdefg 循环右移 3 位后得到 efgabcd1234567891011121314151617181920#include iostream#include stringusingnamespacestd;string operator (conststring s, unsignedintn){string ret ;unsignedintpos 0;n n % s.length();pos s.length() - n;ret s.substr(pos);ret s.substr(0, pos);returnret;}intmain(){string s abcdefg;string r (s 8);cout r endl;return0;}输出结果如下分析过程如下abcdefg 8 等价于 abcdefg 1 因为 8 % 7 17 - 1 6所以把 g 提出来ret g然后 ret g abcdef就是最终结果 gabcdef五、小结应用开发中大多数的情况都在进行字符串处理C 中没有直接支持原生的字符串类型标准库中通过 string 类支持字符串的概念string 类支持字符串和数字的相互转换string 类的应用使得问题的求解变得简单

相关新闻