答えて
str.length() >= 7 && str.substr(str.length() - 7) == "goodbye"
それともstring::substr
が行うよう、それは新しい文字列を割り当てていないので、あなたはおそらく、より効率的であるboost::ends_withを、使用することができます。
私はこのような標準ライブラリのバージョンがもう少し効率的に作ることができます:
str.length() >= 7 && std::equal(str.end() - 7, str.end(), "goodbye");
は実は、今、私はそれを入力したことを、私はそれが私はそれが可能だろうと思ったほど面倒ではありません実現するので、それはすべきおそらく最初のバージョンより優先されるでしょう。
str.compare(str.length() - 7,7、 "さようなら")== 0も可能です – stefan
はい、それは可能だし、それは2つの段階取り:長さを取得していない場合、それは、一致少なくとも7ませんかどうかを確認するために使用strlen
- を。
- 長さを使用して、文字列の最後の7文字を調べ、
strcmp
を使用して比較します。 Cでは
私は最後の7文字を抽出するために使用する必要がありますか? ありがとう:D – xRobot
+と - 演算子。 –
より具体的には、 'str + len-7'は最後の7文字を指します。 (しかし、これは長さが7以上の場合にのみ有効です。そうでなければ、減算は範囲外であり、結果として未定義の動作になります)。 –
#include <string>
int main(void) {
std::string a="hellogoodbye";
size_t pos = a.rfind("goodbye");
if(pos != string::npos && pos == a.length() - 7) std::cout << "true";
}
これは機能しますが、興味があるときには、最後の数文字で –
:C++で
bool ends_with(char const * string, char const * ending) {
size_t const slen = strlen(string);
size_t const elen = strlen(ending);
return slen >= elen && memcmp(string+slen-elen, ending, elen) == 0;
}
:
bool ends_with(std::string const & string, std::string const & ending) {
return string.length() >= ending.length() &&
std::equal(ending.rbegin(), ending.rend(), string.rbegin());
}
- 1. シンプルな正規表現パターン
- 2. シンプルな正規表現
- 3. 正規表現正規表現と異なるハイブ正規表現ですか?
- 4. 正規表現の正規表現の正規表現
- 5. 正規表現マッチ、かなりシンプル:
- 6. シンプルなPHPの正規表現
- 7. シンプルなPHPの正規表現
- 8. シンプルな正規表現の問題!
- 9. シンプルな正規表現パターンの混乱
- 10. シンプルPCRE正規表現
- 11. 正規表現の正規表現と ' -
- 12. 正規表現の正規表現データ
- 13. 正規表現の正規表現
- 14. C#正規表現の正規表現
- 15. 正規表現用の正規表現
- 16. 正規表現 - 正規表現
- 17. 。NET正規表現(正規表現)
- 18. 正規表現 - 正規表現
- 19. 正規表現(正規表現)Java
- 20. (?=正規表現)VS(?:正規表現)
- 21. 正規表現に一致しない正規表現
- 22. 有効な正規表現の正規表現文字列
- 23. 一般的な正規表現の正規表現
- 24. preg_match正規表現の正規表現を持つ正規表現
- 25. 正規表現の正規表現ですか?
- 26. 正規表現と一致しない正規表現ですか?
- 27. 文字列または正規表現のリテラルにない正規表現と一致する正規表現
- 28. 正規表現:表現
- 29. 正規表現表現
- 30. 正規表現表現
がC++スタイルの 'のstd :: STRING'、またはCスタイルの'のchar * 'あなたの文字列です? – Bojangles
C関数を提案して以来、私はあなたがC言語でプログラミングしているのではないかと疑います。C++の答えを探しているのでなければ、C++のタグを削除する必要があります。 –
@R ..:その場合、Cタグを削除する必要がありますか? ;) – PlasmaHH