前言
之前复习了C语言的字符串相关内容(《》),今天复现一下C++的字符串。C++除了可以使用C语言风格的字符串,还引入了新的string类。
这里简单记录一下,方便自己查阅。
正文
C++可以使用C语言风格的字符串,但部分C++不允许使用了。
#include <iostream> using namespace std; int main() { // 在C语言中可以,C++不允许,除非添加const修饰 //char* charP = "biumall.com"; const char* charP = "biumall.com"; cout << "charP = " << charP << endl; char charArray[] = "biumall.com"; cout << "charArray = " << charArray << endl; return 0; }
C++标准库中的<string>
头文件定义了std::string
类,提供了丰富的成员函数和操作符重载,使得字符串处理更加方便和安全。
string类
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "oorr.cn "; cout << "string_1 = " << string_1 << endl; return 0; }
string类型的字符串使用起来很简单,不需要分配空间,也不需要释放。
下面也是一部分功能,还有其他的暂时略过
字符串长度
C语言风格中用sizeof计算字符串长度。
而C++引入的string类型字符串需要使用size()或length()进行计算字符串长度。
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "oorr.cn "; //8 后面有个空格 cout << "string_1.length() = " << string_1.length() << endl; //8 cout << "string_1.size() = " << string_1.size() << endl; // 8 return 0; }
字符串截取
第一个参数是开始截取位置,第二个是截取截止位置。如果第二个参数大于字符串长度,就返回字符串本身。
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "oorr.cn"; string string_2 = string_1.substr(0, 4); cout << "string_2 = " << string_2 << endl; string string_3 = string_1.substr(0, 10); cout << "string_3 = " << string_3 << endl; return 0; }
输出
string_2 = oorr string_3 = oorr.cn
字符串查询
通过find进行查询字符串或字符,如果找不到,返回-1,查找成功返回对应位置的位置。
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "oorr.cn"; int index = string_1.find("rr"); cout << "index = " << index << endl; index = string_1.find("Biu"); cout << "index = " << index << endl; return 0; }
输出
index = 2 index = -1
字符串拼接
string拼接可以使用+,还可以使用append。
append是吧后面的添加到调用者字符串后面。
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "oorr.cn "; string string_2 = "good site"; //不会改变string_1 string string_3 = string_1 + string_2; cout << "string_1 = " << string_1 << endl; cout << "string_3 = " << string_3 << endl; //会改变string_1 string_1.append(string_2); cout << "string_1 = " << string_1 << endl; cout << "string_2 = " << string_2 << endl; return 0; }
输出
string_1 = oorr.cn string_3 = oorr.cn good site string_1 = oorr.cn good site string_2 = good site
字符访问
string类型的字符串可以通过索引进行访问字符,通过at()函数或者[]访问。
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "oorr.cn "; string string_2 = "good site"; char char_1 = string_2.at(3); cout << "char_1 = " << char_1 << endl; char char_2 = string_2[3]; cout << "char_2 = " << char_2 << endl; return 0; }
输出
char_1 = d char_2 = d
字符替换
通过replace可以替换字符或指定索引的字符串。
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "oorr.cn "; string string_2 = "good site"; string_2.replace(0, 4, "GOOD"); cout << "string_2 = " << string_2 << endl; string_2.replace(0, string_2.length(), "GOOD A"); cout << "string_2 = " << string_2 << endl; return 0; }
输出
string_2 = GOOD site string_2 = GOOD A
字符串比较
如果字符串一样的,就是相等;否则从第一个字符开始比较,如果第一个字符相等,接着就比较第二个字符,相等就继续第三个字符比较,但是,如果后面有一个字符不相等,就终止比较并返回结果。
例子1
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "biumall.com"; string string_2 = "biumall.com"; if (string_1 == string_2) { cout << "相等" << endl; } else if (string_1 > string_2) { cout << "大于" << endl; } else { cout << "小于" << endl; } return 0; }
输出
相等
例子2
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "ibumall.com"; string string_2 = "biumall.com"; if (string_1 == string_2) { cout << "相等" << endl; } else if (string_1 > string_2) { cout << "大于" << endl; } else { cout << "小于" << endl; } return 0; }
输出
大于
因为首字符i的值比b大,所以上面是大于。
例子3
#include <iostream> #include <string> using namespace std; int main() { string string_1 = "bij"; string string_2 = "bji"; if (string_1 == string_2) { cout << "相等" << endl; } else if (string_1 > string_2) { cout << "大于" << endl; } else { cout << "小于" << endl; } return 0; }
输出
小于
第二个字符i比j小,所以返回大于。
参考文章
《》
《
© 版权声明