21xrx.com
2024-11-22 07:54:39 Friday
登录
文章检索 我的文章 写文章
C++实现字符串截取函数
2023-07-05 09:45:45 深夜i     --     --
C++ 字符串截取 函数实现

在C++中,字符串截取是一项常用的操作。通过截取字符串,我们可以去除无用的部分,从而得到我们想要的信息。本文将介绍如何使用C++实现字符串截取函数。

一、什么是字符串截取

字符串截取是指从一个字符串中获取指定长度的字符子串的操作。可以通过指定起始位置和截取的长度,来获取需要的子串。

二、C++自带的字符串截取函数

在C++中,有一个非常方便的字符串截取函数substr()。它可以在指定起始位置和长度的情况下,返回一个子串。

例如,以下代码截取字符串str的第2个字符到第5个字符,并将其保存在新的字符串中。


string str = "Hello World!";

string newstr = str.substr(2, 4);

cout << newstr << endl;

输出结果为lo W

这个函数非常简单易用,但它不支持中文字符。如果需要支持中文字符,可以使用下面介绍的方法。

三、使用C++实现字符串截取函数

下面是一个用C++实现的字符串截取函数代码。它支持中文字符,并可以设置截取的起始位置和长度。


#include <iostream>

#include <cstring>

#include <string>

using namespace std;

string substr(string str, int start, int length) {

  string result = "";

  int len = str.length();

  if (start < 0 || length <= 0 || start + length > len)

    return result;

  

  int end = start + length;

  for (int i = start; i < end; i++) {

    if ((unsigned char)str[i] >= 0x80) { // 中文字符处理

      result += str[i];

      result += str[++i];

    } else {

      result += str[i];

    }

  }

  return result;

}

int main() {

  string str = "你好,世界!Hello, World!";

  string newstr = substr(str, 1, 10);

  cout << newstr << endl;

  return 0;

}

上面的代码中,我们首先判断了起始位置和长度是否合法;然后,我们利用for循环将子串逐个字符添加到新的字符串中。在中文字符的处理上,我们将一个中文字符作为两个字符处理。最后,我们返回得到的新的字符串。

运行结果为:


好,世界!He

总结

通过上面的介绍,我们了解了C++中自带的字符串截取函数substr(),并学会了使用C++实现字符串截取函数,实现了中文字符的处理。字符串截取是一项经常用到的操作,掌握这项技能是需要逐步提高的,同时也是编程中常用技巧之一。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复