1.提取子字符串:
void tiqu()
{
std::string str1 = "0123456789";
std::string str2(str1,0,6);//str2为str1从第0位开始连续的6个字符组成的字符串
std::cout << str2 << std::endl;
std::string str3 = str1.substr(2,4);//str3 为str1从第2位开始连续 四个字符组成的字符串
std::cout << str3 << '\n';
}
运行结果:
2,比较字符串大小
void bijiao()
{
std::string str1 = "abcdefg";
std::string str2("ABCDEFG");
std::string str3(str1,0,7);//str3 == str1
std::string str4 = str2.substr(0,7);// str4 == str2
std::cout << str1.compare(str2) << '\n'; //str1 > str2,输出1
std::cout << str2.compare(str1) << '\n'; //str1 < str2,输出-1
std::cout << str1.compare(str3) << '\n'; //str1 = str3,输出0
std::cout << str1.compare(0,2,str2,2,4) << '\n'; // 比较str1子字符串"ab" 和 str2子字符串"CDEF".输出1
std::cout << str1.compare(0,2,str1,3,5) << '\n';// 比较“ab”和“DEF”,S输出-1;
if (str1 > str2) // 类似数字的比较
std::cout << str1 << " > " << str2 << '\n';
if (str1 <= str2)
std::cout << str1 << " <= " << str2 << '\n';
if (str1 == str3)
std::cout << str1 << " = " << str3 <<'\n';
}
运行结果:
3,在一个字符串中搜索另一个字符串
void sosuo()
{
std::string str1("abcdefghijk");
std::string str2("12345678910");
std::string str3 = "cde";
std::cout << str1.find(str3,2) << '\n';//在str1中找str3,从str1的第三个字符开始寻找,返回首次出现的位置
//还可写成std::cout << str1.find("cde",2) << '\n';
std::cout << str2.find(str3,0) << '\n' ;// 寻找不到,返回string::npos(是string::size_type类型的)
//0可以不写
if (str2.find(str3) == std::string::npos)
std::cout << str2 << "中找不到" << str3 << '\n';
}
运行结果:
4,在一个字符串中插入另一个字符串
void charru()
{
std::string str1 = "abcdefghijk";
std::string str2 = "12345678910";
std::cout << str1.insert(0,str2) << '\n';//在指定位置插入字符串
str1 = "abcdefghijk";
std::cout << str1.insert(3,str2,1,3) << '\n';//在指定位置插入str2从第二位开始的连续三个字符,即“234”
str1 = "abcdefghijk";
std::cout << str1.insert(1,3,'0') << '\n'; //在指定位置连续插入三个0(等价于str1,insert(1,"000")
}
运行结果:
5,用一个字符串替换另一个字符串一部分
void tihuang()
{
std::string str1 = "abcdefghijk";
std::string str2 = "12345678910";
std::cout << str1.replace(1,2,str2) << '\n';//str1的“bc”用str2替换
str1 = "abcdefghijk";
std::cout << str1.replace(2,5,str2,0,3) << '\n';//str1的“cdefg”用str2的“123”替换
str1 = "abcdefghijk";
std::cout << str1.replace(2,2,5,'0') << '\n';// str1de “cd”用5个0替换(等价于str1.replace(2,2,"00000"))
}
运行结果:
6,删除一个字符串的一部分
void shangchu()
{
std::string str1 = "123456789";
std::string str2("3456");
int length = str2.length();
if (str1.find(str2) != std::string::npos)
{
std::cout << str1.erase(str1.find(str2),length) << std::endl;//删除str1中从 str1.find(str2)到 str2.length(str2)部分,也就是删除str1中第一次出现的str2
}
}
运行结果: