C++常用字符串函数大全(2)

yizhihongxing

C++常用字符串函数大全(2)

本文为C++字符串函数系列文章的第2篇,主要介绍C++标准库中常用的字符串函数,包括:

  • strncpy(): 复制n个字符到目标字符串中。
  • strncat(): 将目标字符串和n个字符的源字符串拼接到一起。
  • strstr(): 在字符串中查找子串。
  • strspn(): 返回目标字符串开头连续包含源字符串字符的数目。
  • strcspn(): 返回目标字符串开头不包含源字符串字符的数目。
  • strpbrk(): 在目标字符串中查找源字符串中任意字符的第一个位置。

1. strncpy()

函数原型:char* strncpy(char* dest, const char* src, size_t count)

该函数可以将源字符串的前count个字符复制到目标字符串中,并返回目标字符串的指针。

示例1:

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

int main() {
    char str1[11] = "hello";
    char str2[6] = "world";

    strncpy(str1, str2, 3);
    cout << str1 << " " << str2;

    return 0;
}

运行结果为:

worlo world

示例2:

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

int main() {
    char str1[11] = "hello";
    char str2[6] = "world";

    strncpy(str1, str2, 6);
    cout << str1 << " " << str2;

    return 0;
}

运行结果为:

world world

2. strncat()

函数原型:char* strncat(char* dest, const char* src, size_t count)

该函数可以将目标字符串和源字符串的前count个字符拼接到一起,并返回目标字符串的指针。

示例1:

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

int main() {
    char str1[11] = "hello";
    char str2[6] = "world";

    strncat(str1, str2, 3);
    cout << str1 << " " << str2;

    return 0;
}

运行结果为:

hellowor world

示例2:

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

int main() {
    char str1[11] = "hello";
    char str2[6] = "world";

    strncat(str2, str1, 6);
    cout << str1 << " " << str2;

    return 0;
}

运行结果为:

hello worldhello

3. strstr()

函数原型:char* strstr(const char* str1, const char* str2)

该函数可以在字符串str1中查找子串str2,并返回第一次找到的位置,如果找不到则返回NULL。

示例1:

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

int main() {
    char str1[9] = "find me!";
    char str2[4] = "me!";

    char* p = strstr(str1, str2);

    if (p)
        cout << "The substring is found at position " << p - str1 << endl;
    else
        cout << "The substring is not found.";

    return 0;
}

运行结果为:

The substring is found at position 5

示例2:

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

int main() {
    char str1[10] = "find me!!";
    char str2[3] = "me";

    char* p = strstr(str1, str2);

    if (p)
        cout << "The substring is found at position " << p - str1 << endl;
    else
        cout << "The substring is not found.";

    return 0;
}

运行结果为:

The substring is found at position 5

4. strspn()

函数原型:size_t strspn(const char* str1, const char* str2)

该函数可以返回字符串str1开头连续包含字符串str2字符的数目。

示例1:

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

int main() {
    char str1[9] = "find me!";
    char str2[5] = "fide";

    size_t len = strspn(str1, str2);

    cout << "The length of the matched substring is " << len;

    return 0;
}

运行结果为:

The length of the matched substring is 2

示例2:

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

int main() {
    char str1[9] = "find me!";
    char str2[5] = "abcd";

    size_t len = strspn(str1, str2);

    cout << "The length of the matched substring is " << len;

    return 0;
}

运行结果为:

The length of the matched substring is 0

5. strcspn()

函数原型:size_t strcspn(const char* str1, const char* str2)

该函数可以返回字符串str1开头不包含字符串str2字符的数目。

示例1:

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

int main() {
    char str1[9] = "find me!";
    char str2[5] = "mn";

    size_t len = strcspn(str1, str2);

    cout << "The length of the unmatched substring is " << len;

    return 0;
}

运行结果为:

The length of the unmatched substring is 4

示例2:

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

int main() {
    char str1[9] = "find me!";
    char str2[5] = "fi";

    size_t len = strcspn(str1, str2);

    cout << "The length of the unmatched substring is " << len;

    return 0;
}

运行结果为:

The length of the unmatched substring is 0

6. strpbrk()

函数原型:char* strpbrk(const char* str1, const char* str2)

该函数可以在字符串str1中查找字符串str2中任意字符的第一个位置,并返回该位置的指针。

示例1:

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

int main() {
    char str1[10] = "findme!";
    char str2[5] = "lm";

    char* p = strpbrk(str1, str2);

    if (p)
        cout << "The first matching character is " << *p << endl;
    else
        cout << "No matching character found.";

    return 0;
}

运行结果为:

The first matching character is m

示例2:

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

int main() {
    char str1[10] = "findme!";
    char str2[5] = "xy";

    char* p = strpbrk(str1, str2);

    if (p)
        cout << "The first matching character is " << *p << endl;
    else
        cout << "No matching character found.";

    return 0;
}

运行结果为:

No matching character found.

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++常用字符串函数大全(2) - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • Java超详细讲解三大特性之一的继承

    什么是继承 继承是Java语言中的一个重要机制,它可以创建分层次的、具有继承关系的类。在Java中,一个类可以继承另一个类的所有属性和方法。继承的类被称为子类,被继承的类被称为父类或超类。 继承的语法 Java中使用关键字extends表示继承关系。下面是继承的语法格式: class 子类名 extends 父类名{ //子类的属性和方法 } 其中,子类名指…

    other 2023年6月26日
    00
  • Android 获取判断是否有悬浮窗权限的方法

    Android 获取判断是否有悬浮窗权限的方法 在Android开发中,判断是否有悬浮窗权限是一个常见的需求。下面是一种获取并判断悬浮窗权限的方法: 首先,在AndroidManifest.xml文件中添加悬浮窗权限声明: <uses-permission android:name=\"android.permission.SYSTEM_AL…

    other 2023年9月7日
    00
  • WindiCSS实现加载windi.config.ts配置文件详解

    WindiCSS是一款轻量级的CSS框架,它使用类似Tailwind CSS的方式来简化css样式的编写。WindiCSS支持使用配置文件来定制化设置,而其中最重要的就是windi.config.ts配置文件。下面我们一步步讲解如何在项目中配置和使用windi.config.ts文件。 首先,我们需要在项目中安装WindiCSS依赖包。可以使用npm或者ya…

    other 2023年6月25日
    00
  • python的n个小功能(高斯模糊原理及实践)

    python的n个小功能(高斯模糊原理及实践) 在图像处理中,高斯模糊是一种常用的平滑滤波器。它可以减少噪声、消除细节,并使边缘保持连续。在本文中,我们将探讨高斯模糊的原理,并使用Python的OpenCV库实现高斯模糊。 高斯模糊原理 高斯模糊是一种线性滤波器,根据二维高斯函数生成权重矩阵,将该权重矩阵应用于图像上的每个像素,从而生成模糊的图像。二维高斯函…

    2023年3月28日
    00
  • Spring AOP对嵌套方法不起作用的解决

    Spring AOP对嵌套方法不起作用的解决攻略 在使用Spring AOP时,有时候会遇到嵌套方法无法被AOP拦截的情况。这是因为Spring AOP默认只能拦截直接调用的方法,而无法拦截嵌套调用的方法。下面是解决这个问题的完整攻略。 1. 使用AspectJ代替Spring AOP AspectJ是一个功能更强大的AOP框架,可以解决Spring AOP…

    other 2023年7月28日
    00
  • ensp启动不了usg6000v怎么办

    如果ENSP无法启动USG6000V,可能是由于以下原因: USG6000V未正确安装或配置。 ENSPUSG6000V版本不兼容。 NSP配置错误。 以下是关于如何解决ENSP无法启动USG6000V的详细攻略: 步骤一:检查USG6000V安装和配置 确保USG6000V已正确安装和配置。以下是一些常见的检查点: 确保USG6000V已正确安装并已启动。…

    other 2023年5月7日
    00
  • HTML 提高页面加载速度的方法

    当今互联网时代,用户更注重网站的反应速度。因此,网站的快速加载对于提高用户的满意度和留存率至关重要。在这里,我们提供了一些如何通过优化 HTML 代码来提高网站速度的方法。 HTML 提高页面加载速度的方法 1.减少 HTTP 请求 每个 HTTP 请求都需要服务器响应,因此减少 HTTP 请求可以显著提高网站的加载速度。以下是一些来自 Yahoo!性能优化…

    other 2023年6月25日
    00
  • 详解CSS中的选择器优先级顺序

    详解CSS中的选择器优先级顺序 什么是选择器优先级顺序? 在CSS中,选择器优先级顺序指的是当多个选择器同时作用于同一元素时,浏览器根据一定的规则来确定哪个选择器的样式规则将会被应用。选择器优先级顺序的理解对于正确而精确地渲染网页的样式非常重要。 选择器优先级顺序的规则 选择器优先级顺序的规则如下: 内联样式(Inline Styles):通过style属性…

    other 2023年6月28日
    00
合作推广
合作推广
分享本页
返回顶部