c++中的substr函数
小小宇宙中微子 2024-08-09 08:35:01 阅读 71
在C++中,<code>substr() 是 std::string
类的一个成员函数,用于从字符串中提取子字符串。以下是 substr()
函数的一些基本用法:
语法
substr(size_t pos = 0, size_t len = npos)
pos
是子字符串开始的位置(基于 0 的索引)。如果不提供,它默认为 0,即从字符串的开头开始。len
是要提取的子字符串的长度。如果不提供,npos
(std::string::npos
)将被用作默认值,这意味着子字符串将从 pos
开始一直延伸到原字符串的末尾。
使用示例
提取整个字符串:
std::string s = "Hello, World!";
std::string sub = s.substr();
// sub 现在是 "Hello, World!"
从字符串中间开始提取:
std::string s = "Hello, World!";
std::string sub = s.substr(7); // 从索引 7 开始
// sub 现在是 "World!"
提取特定长度的子字符串:
std::string s = "Hello, World!";
std::string sub = s.substr(7, 5); // 从索引 7 开始,长度为 5
// sub 现在是 "World"
提取到字符串末尾的子字符串:
std::string s = "Hello, World!";
std::string sub = s.substr(5, std::string::npos);
// sub 现在是 ", World!"
注意事项
如果 pos
大于字符串的长度,substr()
将抛出 std::out_of_range
异常。如果 pos
合法但 pos + len
超出了字符串的末尾,substr()
将只提取到字符串的末尾,而不是抛出异常。
substr()
是一个非常有用的函数,可以在处理字符串时提供灵活性。然而,值得注意的是,在 C++11 及以后的版本中,更推荐使用 std::string::substr()
的替代函数 std::string::operator()()
,因为它提供了更好的异常安全性。
例题
最长公共字符串后缀
给出若干个字符串,输出这些字符串的最长公共后缀。
输入格式
由不超过
5
5
5 组输入组成。
每组输入的第一行是一个整数
N
N
N。
N
N
N 为
0
0
0 时表示输入结束,否则后面会继续有
N
N
N 行输入,每行是一个字符串(字符串内不含空白符)。
每个字符串的长度不超过
200
200
200。
输出格式
每组数据输出一行结果,为
N
N
N 个字符串的最长公共后缀(可能为空)。
数据范围
1
≤
N
≤
200
1 \le N \le 200
1≤N≤200
输入样例:
3
baba
aba
cba
2
aa
cc
2
aa
a
0
输出样例:
ba
a
C++ 代码
#include
#include
#include
using namespace std;
int main()
{
int n;
while(cin >> n, n)
{
string s, a;
int MAX = 999999;
cin >> s;
for(int i = 1; i < n; ++ i)
{
int res = 0;
cin >> a;
for(int j = 0; j < a.size() && j < s.size(); ++ j)
if(a[a.size() - 1 - j] == s[s.size() - 1 - j]) res++;
else break;
MAX = min(MAX, res);
}
if(MAX) cout << s.substr(s.size()-MAX) << endl;
else cout << endl;
}
return 0;
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。