📜  C++中的子字符串(1)

📅  最后修改于: 2023-12-03 14:39:58.241000             🧑  作者: Mango

C++中的子字符串

在C++中,子字符串是指在一个字符串中提取出的部分字符串。C++提供了多种方法来操作和获取子字符串。本文将介绍C++中常用的子字符串操作和相关函数。

字符串切片

C++中可以使用substr()函数来获取一个字符串的子串。substr()函数需要两个参数,第一个参数是要开始切割的位置,第二个参数是切割的长度。

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello World!";
    
    std::string sub1 = str.substr(6);
    std::cout << "Substring 1: " << sub1 << std::endl;  // 输出 "World!"
    
    std::string sub2 = str.substr(0, 5);
    std::cout << "Substring 2: " << sub2 << std::endl;  // 输出 "Hello"
    
    return 0;
}

可以使用[]操作符来获取单个字符或者使用迭代器遍历子字符串。

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello World!";
    
    char ch1 = str[6];
    std::cout << "Character at index 6: " << ch1 << std::endl;  // 输出 'W'
    
    for (char ch2 : str.substr(0, 5)) {
        std::cout << ch2 << " ";  // 输出 "H e l l o "
    }
    std::cout << std::endl;
    
    return 0;
}
字符串查找

在C++中,可以使用以下函数来查找字符串中的子字符串或者字符。

  • find()函数:查找字符串中第一个匹配子串的位置。
  • rfind()函数:从字符串末尾往前查找字符串中第一个匹配子串的位置。
  • find_first_of()函数:查找字符串中的任意一个字符第一次出现的位置。
  • find_last_of()函数:从字符串末尾往前查找字符串中的任意一个字符最后一次出现的位置。
  • find_first_not_of()函数:查找字符串中第一个不匹配指定字符集合的位置。
  • find_last_not_of()函数:从字符串末尾往前查找字符串中最后一个不匹配指定字符集合的位置。

这些函数返回的是位置索引,如果找不到匹配的字符串,则返回std::string::npos

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello World!";
    
    std::size_t pos1 = str.find("World");
    std::cout << "First occurrence of 'World' at position: " << pos1 << std::endl;
    
    std::size_t pos2 = str.find_last_of("o");
    std::cout << "Last occurrence of 'o' at position: " << pos2 << std::endl;
    
    std::size_t pos3 = str.find_first_not_of("Hello ");
    std::cout << "First non-matching character at position: " << pos3 << std::endl;
    
    return 0;
}
字符串替换

C++提供了replace()函数来替换字符串中的子字符串。

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello World!";
    
    str.replace(6, 5, "C++");
    std::cout << "Replaced string: " << str << std::endl;  // 输出 "Hello C++!"
    
    return 0;
}
字符串拼接

C++可以使用+运算符或者append()函数来拼接字符串。

#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello";
    std::string str2 = "World!";
    
    std::string result1 = str1 + " " + str2;
    std::cout << "Concatenated string: " << result1 << std::endl;  // 输出 "Hello World!"
    
    std::string result2 = str1.append(" ").append(str2);
    std::cout << "Appended string: " << result2 << std::endl;  // 输出 "Hello World!"
    
    return 0;
}
其他字符串操作

在C++中还有其他一些常用的字符串操作函数,比如:

  • length()size()函数:获取字符串的长度。
  • empty()函数:判断字符串是否为空。
  • compare()函数:比较两个字符串的大小。
  • c_str()函数:获取字符串的C风格字符串表示。
#include <iostream>
#include <string>

int main() {
    std::string str = "Hello World!";
    
    std::cout << "Length of string: " << str.length() << std::endl;
    std::cout << "Is string empty: " << (str.empty() ? "true" : "false") << std::endl;
    std::cout << "Comparison result: " << str.compare("Hello") << std::endl;
    std::cout << "C-style string: " << str.c_str() << std::endl;
    
    return 0;
}

以上是C++中常用的子字符串操作和相关函数。通过灵活运用这些函数,可以方便地操作字符串的子串和进行各种字符串处理任务。