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 是要提取的子字符串的长度。如果不提供,nposstd::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;

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。