推荐一很好用的字符串函数

我竟然今天才知道,这之前讲过,没好好听课,要好好听课了。

好了,这个就是substr。

介绍

substr名“子字符串”,是(substring)的缩写,它的主要作用是:从一个字符串中,提取出从指定位置开始、指定长度的一段字符,而不会修改原来的字符串。

基本语法

通常格式为:substr(起始位置, 长度)

起始位置:从哪个字符开始取。

大多数语言中,0 表示第一个字符,1 表示第二个(但比如PHP中字符串起始位置是0)。

如果为负数,通常表示从字符串尾部开始倒数。

长度:需要提取的字符个数。如果不写,通常表示一直取到字符串末尾。

简单例子

假设字符串是 "Hello, World!"

substr(0, 5) → 返回 "Hello" (从第1个字符取5个长度)

substr(7, 5) → 返回 "World"

substr(7) → 返回 "World!" (省略长度,取到末尾)

substr(-6, 5) → 返回 "World" (从倒数第6个字符开始取5个)

例子:

HD2025M1. 字符串就可以用substr;

代码:

#include <bits/stdc++.h>
using namespace std;
int n,len;
string s;
int main(){
	cin>>n;
	cin>>s;
	for(int i=n/2;i>=1;i--){
		string a=s.substr(0,i);
		string b=s.substr(i,i);
		if(a==b){
			cout<<n-i+1;
			return 0;
		}
	}
	cout<<n;
	return 0;
}

注意区分:substr() 和 substring()

substr(start, length)

提取的长度 (字符个数) 比如 substr(2, 3) 从索引2开始取3个字符

substring(start, end)

结束的索引位置 (不包含该位置) 比如 substring(2, 5) 从索引2取到索引4(索引5不取)