21xrx.com
2024-11-22 02:26:52 Friday
登录
文章检索 我的文章 写文章
C++字符串拷贝函数substr详解
2023-07-12 08:55:49 深夜i     --     --
C++ 字符串拷贝函数 substr 详解 使用方法

C++语言中有许多字符串相关的函数,其中包括字符串拷贝函数substr。substr函数可以从一个字符串中截取一段子串,并返回这个子串。接下来,本文将详细介绍C++字符串拷贝函数substr的使用方法。

substr函数的语法格式为:

string substr (size_t pos, size_t len) const;

其中pos表示从哪个位置开始截取子串,len表示截取的子串长度。其实现原理是从pos位置开始遍历原字符串,读取len个字符到新字符串中。如果len参数被省略,则substr函数将一直截取到原字符串的末尾。

以下是substr函数的实例:


#include <iostream>

#include <string>

using namespace std;

int main()

{

  string str = "Hello, World!";

  string sub = str.substr(7, 5);

  cout << "sub = " << sub << endl;

  return 0;

}

输出结果为:


sub = World

可以看到,截取了从第7个字符开始的5个字符,即从W开始的5个字符。

此外,substr函数还可以用于提取文件名、路径、文件扩展名等特定部分的字符串。例如:


#include <iostream>

#include <string>

using namespace std;

int main()

{

  string filepath = "/home/user/Documents/example.txt";

  int pos1 = filepath.rfind("/");

  int pos2 = filepath.rfind(".");

  string filename = filepath.substr(pos1+1, pos2-pos1-1);

  string extname = filepath.substr(pos2+1);

  cout << "filename = " << filename << endl;

  cout << "extname = " << extname << endl;

  return 0;

}

输出结果为:


filename = example

extname = txt

在上述示例中,我们先使用rfind函数找到文件名和文件扩展名的分界点,然后使用substr函数提取出文件名和扩展名。可以看到,rfind函数返回的是从右边开始查找到的第一个匹配字符的位置。

在使用substr函数时,需要注意以下几点:

1. 子串长度len不能超出原字符串的长度;

2. 如果pos参数大于或等于原字符串的长度,则substr函数将返回一个空字符串;

3. 如果len参数省略,则将截取从pos位置开始到原字符串末尾的所有字符。

总结而言,substr函数是C++中非常常用的字符串拷贝函数。其具有灵活的截取功能,可以方便地获取字符串中的特定部分,是编写字符串处理程序必不可少的工具之一。

  
  

评论区

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