如何检查字符是否在字符串中?

时间:2014-12-26 21:49:21

标签: c++ c++11

情况是这样的,我不必知道角色在哪里,但只有在那里。我正在寻找一种可能集成的快速解决方案。提前谢谢!

我正在使用c ++ 11。

2 个答案:

答案 0 :(得分:0)

以下函数会在找到字符后立即停止查找:

std::string str ("My string with: a");

if (str.find_first_of("a")!=std::string::npos)
{
    return 1;
}
else
{
    return 0;
}

答案 1 :(得分:-1)

如果您的意思是标准类std::string,那么它有方法查找

例如

#include <iostream>
#include <string>

//...

std::string s( "123456789" );

auto n = s.find( '5' );

if ( n != std::string::npos )
{ 
    std::cout << "character '5' found at position " << n << std::endl;
}

您可以使用此方法编写函数。例如

bool find_char( const std::string &s, char c )
{
    return ( s.find( c ) != std::string::npos );
}

如果您希望函数返回1或0,则只需将其返回类型更改为int。

int find_char( const std::string &s, char c )
{
    return ( s.find( c ) != std::string::npos );
}

如果您指的是字符数组,那么您可以使用标准算法std::findstd::any_of或标准C函数strchr

例如

#include <iostream>
#include <cstring>

//...

char s[] = "123456789";

char *p = std::strchr( s, '5' );


if ( p != nullptr ) 
{
    std::cout << "character '5' found at position " << p - s << std::endl;
}

或者如果要使用算法std::find,则代码看起来像

#include <iostream>
#include <algorithm>
#include <iterator>

//...

char s[] = "123456789";

char *p = std::find( std::begin( s ), std::end( s ), '5' );

if ( p != std::end( s ) )
{
    std::cout << "character '5' found at position " << std::distance( s, p ) << std::endl;
}