21xrx.com
2024-11-22 05:51:15 Friday
登录
文章检索 我的文章 写文章
C++:查找字符串中字符的位置
2023-07-09 22:00:08 深夜i     --     --
C++ 查找字符串 字符位置

C++是一种高级编程语言,它支持各种数据类型和数据结构,其中包括字符串。在处理字符串时,常常需要查找字符或子串在字符串中的位置。以下为C++中常用的几种方式。

1. find函数

find函数是C++ STL的一个成员函数,用于查找字符串中某个字符或子串的位置。它的原型为:

string::size_type find (const string& str, size_t pos = 0) const noexcept;

其中str表示要查找的字符或子串,pos表示在哪个位置开始查找,默认为0。如果找到,则返回该字符或子串在字符串中的位置;如果未找到,则返回string::npos。

示例代码:

string s = "hello world";

cout << s.find('l') << endl; // 输出2(从第一个字符开始,第一次出现l的位置)

cout << s.find("world") << endl; // 输出6(从第一个字符开始,第一次出现world的位置)

cout << s.find("world", 7) << endl; // 输出string::npos(从第8个字符开始查找,未找到world)

2. find_first_of函数

find_first_of函数是C++ STL的另一个成员函数,用于查找字符串中任意一个字符第一次出现的位置。它的原型为:

string::size_type find_first_of (const string& str, size_t pos = 0) const noexcept;

其中str表示要查找的字符集,pos表示在哪个位置开始查找,默认为0。如果找到,则返回该字符在字符串中的位置;如果未找到,则返回string::npos。

示例代码:

string s = "hello world";

cout << s.find_first_of("aeiou") << endl; // 输出1(从第一个字符开始,第一次出现a、e、i、o、u中任意一个字符的位置)

cout << s.find_first_of("aeiou", 2) << endl; // 输出4(从第3个字符开始查找,第一次出现a、e、i、o、u中任意一个字符的位置)

3. for循环遍历

如果只需查找单个字符或子串,也可以使用for循环遍历字符串,依次判断每个字符或子串是否与待查找的字符或子串相等。如果相等,则返回当前位置。如果未找到,则返回-1或string::npos。

示例代码:

string s = "hello world";

char c = 'l';

int pos = -1;

for (int i = 0; i < s.size(); i++) {

  if (s[i] == c)

    pos = i;

    break;

}

cout << pos << endl; // 输出2(从第一个字符开始,第一次出现l的位置)

以上三种方式均可用于查找字符或子串在字符串中的位置,具体使用哪种方式取决于需要查找的内容和程序的实现。

  
  

评论区

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