一、string的定义
在C++中,string是一个类,它是STL的一部分,因此 string是标准模板库中的一个模板类,可以通过使用该模板类轻松操作字符串。在C++中,string是动态的,这意味着它可以自动调整大小以适应不同的字符串长度。
//string的定义
#include
#include
using namespace std;
int main(){
string str1 = "Hello";
string str2 = "World";
string str3 = str1 + str2;
cout << str3 << endl;
return 0;
}
二、string的常用方法
string提供了许多有用的方法,用于操作和处理字符串。在这里我们列出一些常用的方法:
1、length(),size()
这两个方法用于返回字符串的长度。
//length()和size()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello World!";
cout << "length of string str: " << str.length() << endl;
cout << "size of string str: " << str.size() << endl;
return 0;
}
2、compare()
该方法用于比较两个字符串的大小。当字符串相等时返回0,str1>str2时返回大于0的值,str1
//compare()的演示
#include
#include
using namespace std;
int main(){
string str1 = "Hello";
string str2 = "hello";
if (str1.compare(str2) == 0) {
cout << "Strings are equal." << endl;
} else if (str1.compare(str2) > 0) {
cout << "str1 is greater than str2." << endl;
} else {
cout << "str2 is greater than str1." << endl;
}
return 0;
}
3、substr()
该方法用于返回字符串的一个子串。
//substr()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello World!";
string subStr = str.substr(6, 5);
cout << "Substring is: " << subStr << endl;
return 0;
}
4、find()
该方法用于查找字符串中第一次出现子串的位置。
//find()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello World!";
size_t found = str.find("World");
if (found != string::npos) {
cout << "Substring found at position: " << found << endl;
} else {
cout << "Substring not found." << endl;
}
return 0;
}
三、string的容器特性
因为string是一个类,它具有内部的容器特性,这些特性可以用来存储其值,同时许多STL算法也可以使用string容器执行操作。
1、push_back()
可以使用该方法向string容器中添加字符。
//push_back()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello";
str.push_back(' ');
str.push_back('W');
str.push_back('o');
str.push_back('r');
str.push_back('l');
str.push_back('d');
cout << str << endl;
return 0;
}
2、clear()
该方法清空容器中的字符串。
//clear()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello World!";
cout << "Before clear: " << str << endl;
str.clear();
cout << "After clear: " << str << endl;
return 0;
}
3、empty()
该方法用于检查一个字符串容器是否为空。
//empty()的演示
#include
#include
using namespace std;
int main(){
string str1 = "";
string str2 = "Hello World!";
if (str1.empty()) {
cout << "str1 is empty." << endl;
} else {
cout << "str1 is not empty." << endl;
}
if (str2.empty()) {
cout << "str2 is empty." << endl;
} else {
cout << "str2 is not empty." << endl;
}
return 0;
}
四、string的异常处理
string类也提供了多种异常处理方法,以防止程序在执行过程中出现崩溃的情况。
1、at()
at()方法用于访问下标,当访问到一个不存在的下标时,该方法会抛出out_of_range异常。
//at()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello World!";
try {
char ch = str.at(20);
} catch (std::out_of_range& e) {
cout << "Exception: " << e.what() << endl;
}
return 0;
}
2、erase()
该方法用于删除一个字符串中的一部分内容。
//erase()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello World!";
try {
str.erase(6, 6);
cout << str << endl;
str.erase(11, 1);
cout << str << endl;
} catch (std::out_of_range& e) {
cout << "Exception: " << e.what() << endl;
}
return 0;
}
3、replace()
该方法用于替换一个字符串中的一部分内容。
//replace()的演示
#include
#include
using namespace std;
int main(){
string str = "Hello World!";
try {
str.replace(6, 5, "C++");
cout << str << endl;
} catch (std::out_of_range& e) {
cout << "Exception: " << e.what() << endl;
}
return 0;
}
总结
在C++编程中,字符串是一种十分常见且基础的数据类型,对于熟练掌握string的开发人员来说,C++的编程难度将会大大降低。本文深入探究了string在C++中的定义、常用方法以及容器特性和异常处理方法,相信这些知识对于初学者是非常有帮助的。