21xrx.com
2025-04-11 07:00:40 Friday
文章检索 我的文章 写文章
C++ 字符串截取子串
2023-07-05 06:57:23 深夜i     84     0
C++ 字符串 截取 子串

C++字符串截取子串是一种常见的字符串操作。在编程实践中,我们经常需要从字符串中提取一部分内容或者在字符串中搜索某个特定字符或字符串。因此,学习如何截取子串是非常必要的。

在C++中,字符串是char数组,在处理字符串时我们需要用到一些标准库函数来实现相关的操作,例如:

1. strncpy函数

该函数用于将源字符串中的前n个字符复制到目标字符数组中。其中源字符数组第n+1个字符及后面的字符会被截断,不会进行拷贝。该函数的原型如下:

char* strncpy (char* dest, const char* src, size_t n);

2. strstr函数

该函数用于在源字符串中查找子串,并返回子串在源字符串中的指针。如果查找不到则返回NULL。该函数的原型如下:

char* strstr(const char* str1, const char* str2);

下面我们来看一个例子,该例子展示了如何使用该函数实现字符串截取子串:

#include <iostream>
#include <cstring>
using namespace std;
int main() {
  char str[20] = "Hello, World!";
  char substr[10];
  // 示例1:截取从第7个字符开始的4个字符,即"World"
  strncpy(substr, &str[7], 4);
  substr[4] = '\0'; //手动在尾部加上字符串结束标志 '\0'
  cout << "str: " << str << endl;
  cout << "substr: " << substr << endl;
  // 示例2:查找子串"llo"在原字符串中的位置
  char* ptr = strstr(str, "llo");
  if (ptr != NULL)
    cout << "The position of 'llo' in str is: " << ptr - str << endl;
   else
    cout << "Cannot find 'llo' in str." << endl;
  
  return 0;
}

上述代码中,我们首先定义了一个字符串变量 str,并初始化为"Hello, World!"。我们需要从其中提取一个子串,这个子串是从第7个字符开始的4个字符,即"World"。为了实现这个操作,我们使用了strncpy函数,第一个参数是目标字符串数组 substr,第二个参数是源字符串中需要提取的子串的首地址,第三个参数是需要提取的字符个数。最后,我们手动在截取后的子串末尾加上字符串结束标志 '\0'。

另外,我们还演示了如何使用strstr函数在源字符串中查找子串"llo",并输出其在源字符串中的位置。

经过上述例子的演示,相信大家已经掌握了C++字符串截取子串的使用方法。特别是在对于字符串的处理中,有时候需要对于这种情况做一些处理,能够使得程序更加灵活和高效。因此,学习字符串操作也是代码开发过程中的一项核心内容。

  
  

评论区