前言

之前复习了C语言的字符串相关内容(《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小,所以返回大于。

参考文章

  1. C++中string字符串类型详解及常见方法分析

  2. 标准C++ 字符串

 历史上的今天

  1. 鸿蒙
  2. 52pkvr网
  3. 快吧手游
  4. 121下载站
  5. 三国志11
  6. 有啥下载
  7. 地之图下载
  8. 中船下载网
  9. 优速下载

相关文章

暂无评论

none
暂无评论...