📜  在C ++ 20中带有示例的starts_with()和ends_with()(1)

📅  最后修改于: 2023-12-03 15:37:34.383000             🧑  作者: Mango

在C++ 20中带有示例的starts_with()和ends_with()

在C++ 20中,字符串处理变得更加方便了,其中包括字符串开头和结尾的判断函数:starts_with()和ends_with()。这两个函数能够方便地帮助程序员进行字符串处理,让代码更加简洁和易于维护。

starts_with()

starts_with()是一个用于判断字符串的开头是否匹配给定字符序列的函数。它的函数签名如下:

template<class CharT, class Traits, class Allocator>
constexpr bool starts_with(
    const std::basic_string<CharT, Traits, Allocator>& str,
    const basic_string_view<CharT, Traits>& sv) noexcept;

其中,str是需要被查找的字符串,而sv是用于匹配的字符序列。函数返回一个bool值,表示匹配是否成功。

下面是一段示例代码:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, world!";
    bool result1 = starts_with(str, "Hello");
    bool result2 = starts_with(str, "world");

    cout << "Result 1: " << result1 << endl;   // Output: Result 1: 1
    cout << "Result 2: " << result2 << endl;   // Output: Result 2: 0

    return 0;
}

在上面的示例代码中,我们使用了starts_with()函数来判断字符串是否以给定的字符序列开头。结果1为真,因为字符串str的开头是"Hello";结果2为假,因为它并不是以"world"开头的。

ends_with()

类似于starts_with(),ends_with()用于判断字符串的结尾是否匹配给定字符序列。它的函数签名如下:

template<class CharT, class Traits, class Allocator>
constexpr bool ends_with(
    const std::basic_string<CharT, Traits, Allocator>& str,
    const basic_string_view<CharT, Traits>& sv) noexcept;

其中,str是需要被查找的字符串,而sv是用于匹配的字符序列。函数返回一个bool值,表示匹配是否成功。

下面是一段示例代码:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, world!";
    bool result1 = ends_with(str, "world!");
    bool result2 = ends_with(str, "Hello");

    cout << "Result 1: " << result1 << endl;   // Output: Result 1: 1
    cout << "Result 2: " << result2 << endl;   // Output: Result 2: 0

    return 0;
}

在上面的示例代码中,我们使用了ends_with()函数来判断字符串是否以给定的字符序列结尾。结果1为真,因为字符串str的结尾是"world!";结果2为假,因为它并不是以"Hello"结尾的。

通过使用starts_with()和ends_with()函数,我们可以很方便地对字符串进行处理。这两个函数也展示了C++ 20的新特性,许多其他的新特性也值得我们去了解了解。