2016-10-26 6 views
0

find_first_not_ofのように、位置ではなく真または偽を返す関数はありますか?私はその位置を必要としませんが、文字列に同じ文字がすべて含まれているかどうかは関係ありません。文字列に同じ文字が含まれているかどうかを確認

+2

'find_first_not_of()'の戻り値を 'std :: string :: npos'と比較するだけです。 –

答えて

0

独自の機能を記述することができます。

bool all_chars_same(string testStr) { 
    char letter = testStr[0]; 

    for (int i = 1; i < testStr.length(); i++) { 
     if (testStr[i] != letter) 
      return false; 
    } 

    return true; 
} 

するか、find_fist_not_ofに建てられた使用:

bool all_chars_same(string testStr) { 
    return testStr.find_first_not_of(testStr[0]) == string::npos; 
} 
1

ただstring::nposためfind_first_not_ofによって返された値をチェックします。

// needs to check if str.size() > 0 
bool all_same = str.find_first_not_of(str[0]) == string::npos; 

を代わりにあなたが単一のchを探しているからですアグリター、std::all_ofもあります。

bool all_same = std::all_of(str.cbegin(), str.cend(), [&](char c){ return str[0] == c; }); 
0

私は定義をお勧めします、それはより速い方法です。

#define find_not_of(a) (a.find_first_not_of(a[0]) != std::string::npos) 
+0

MACROの機能を優先します。 – Jarod42

関連する問題