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

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日

相关文章

  • C语言关键字大全(共32个)

    C语言关键字大全(共32个) C语言关键字是指具有特殊含义的单词,不能被用作变量名、函数名等标识符。C语言一共有32个关键字,包括: Auto Double Int Struct Break Else Long Switch Case Enum Register Typedef Char Extern Return Union Const Float Sho…

    other 2023年6月27日
    00
  • vscode使用nuget包管理工具

    VSCode使用NuGet包管理工具攻略 简介 本文将介绍在VSCode中如何使用NuGet包管理工具,来管理项目中的.NET标准类库和NuGet包。 前置条件 在使用NuGet包管理工具前,需要确保以下条件已经满足: 安装VSCode 安装.NET Core SDK 安装NuGet包管理工具 可以通过在命令行中运行以下命令来安装NuGet包管理工具: do…

    other 2023年6月27日
    00
  • ora-01722:无效数字的解决方法

    针对ORA-01722无效数字错误,下面提供完整攻略: 1. 错误原因 ORA-01722错误通常是由于使用了无效的数字格式造成的,比如在字符类型的列中插入了数字或者在数字类型的列中插入了非数字类型的数据。 2. 解决方法 针对ORA-01722错误,以下是几种解决方法: 2.1 检查数据类型 首先确认数据库表定义的数据类型与插入的数据类型是否匹配,可以通过…

    其他 2023年4月16日
    00
  • PPT2016主题中的大写字母怎么变为小写的?

    要将PPT2016主题中的大写字母变为小写字母,可以按照以下步骤进行操作: 打开PPT2016并选择要修改主题的演示文稿。 在顶部菜单栏中,点击“视图”选项卡。 在“视图”选项卡下,点击“幻灯片母版”按钮。这将打开幻灯片母版视图。 在幻灯片母版视图中,你将看到演示文稿的整体布局。在左侧的幻灯片母版窗格中,选择要修改的主题。 在主题上右键单击,并选择“编辑主题…

    other 2023年8月16日
    00
  • golang执行exec命令

    当然,我可以为您提供详细的“golang执行exec命令”的完整攻略,包括两个示例说明。 golang执行exec命令的完整攻略 在Go语言中,我们可以使用os/exec包来执行外部命令。os/exec包提供了一个Cmd类型,用于表示一个正在准备执行的命令。我们可以使用Cmd类型的方法来设置命令的参数、环境变量、输入输出等选项,然后使用Run()方法来执行命…

    other 2023年5月7日
    00
  • 详解javascript中offsetleft属性的用法(转)

    详解javascript中offsetLeft属性的用法(转) 在前端开发中,我们经常需要获取页面元素在文档流中的位置信息。其中,offsetLeft属性可用于获取某个 HTML 元素相对与其父元素的左侧偏移量(即元素左边缘与其父元素左边缘之间的距离),并且不考虑边框宽度。本文将详解javascript中offsetLeft属性的用法,为大家讲解如何正确地使…

    其他 2023年3月28日
    00
  • jQuery lazyload 的重复加载错误以及修复方法

    下面是 “jQuery lazyload的重复加载错误以及修复方法” 的完整攻略。 什么是 jQuery lazyload jQuery lazyload是一款可延迟加载图片的jQuery插件。它可以帮助网页优化,当用户滚动页面时,不立即加载图片,而是在它们出现在浏览器视口内时才加载。这样可以减少页面加载时间并提高用户体验。 重复加载错误 在实现jQuery…

    other 2023年6月25日
    00
  • 苹果操作系统详解

    苹果操作系统详解 苹果操作系统是苹果公司开发的、运行于苹果电脑上的操作系统,主要包括macOS和iOS两个版本。macOS是苹果电脑上的操作系统,而iOS则是苹果公司的移动设备操作系统。 macOS操作系统 系统架构 macOS的核心是基于UNIX的Darwin内核。Darwin内核是开源的,因此开发者可以获得内核源代码、自主开发定制版内核。macOS还包括…

    其他 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部