首次出现字符串中的字符

时间:2015-05-04 09:59:16

标签: c++ string

我知道方法strchr,它在字符数组中找到第一个出现的任何字符。但是如何在字符串中找到第一个出现的字符?

更具体地说,我想要任何方法来做到这一点 - >

     john.smith@codeforces.ru/contest.icpc/12

在搜索@时,它应该给出10并且在搜索/时应该给出25而不是38。

3 个答案:

答案 0 :(得分:4)

使用std::string::find(char c)

std::string a = "john.smith@codeforces.ru/contest.icpc/12";
cout << a.find('.') << endl; //4
cout << a.find('/') << endl; //24

答案 1 :(得分:1)

您的朋友是std::string::find_first_of()

std::string str("john.smith@codeforces.ru/contest.icpc/12");
str.find_first_of("@");   // returns 10
str.find_first_of("@/");  // returns 10
str.find_first_of("/");   // returns 24 .. or so

答案 2 :(得分:1)

对于您显示的字符串,您希望字符串中的字符'/'得到结果,您应该使用表达式,因为它们写在下面的程序中

#include <iostream>
#include <string>

int main()
{
    std::string s = "john.smith@codeforces.ru/contest.icpc/12";

    std::cout << s.find( '/' ) + 1  << std::endl;
    std::cout << s.rfind( '/' ) + 1 << std::endl;
}   

程序输出

25
38

考虑到该职位从0开始。

否则只使用s.find()和/或s.rfind()