std:string が「xyz」で始まるかどうかを確認する必要があります。文字列全体を検索したり、substr() で一時的な文字列を作成したりせずに、どうすればよいでしょうか。
67723 次
5 に答える
164
私は比較方法を使用します:
std::string s("xyzblahblah");
std::string t("xyz")
if (s.compare(0, t.length(), t) == 0)
{
// ok
}
于 2009-05-31T11:23:32.737 に答える
14
標準ライブラリの精神に沿ったアプローチは、独自の begin_with アルゴリズムを定義することです。
#include <algorithm>
using namespace std;
template<class TContainer>
bool begins_with(const TContainer& input, const TContainer& match)
{
return input.size() >= match.size()
&& equal(match.begin(), match.end(), input.begin());
}
これにより、クライアント コードへのシンプルなインターフェイスが提供され、ほとんどの標準ライブラリ コンテナーと互換性があります。
于 2013-05-15T15:55:49.580 に答える
10
プロジェクトでブーストライブラリの一部のみを使用する場合は、bcp ユーティリティを使用してコピーできます。必要なファイルのみ
于 2009-05-31T10:54:49.130 に答える
0
私はあなたの質問を完全に理解していないと感じています。それは些細なことのように見えます:
s[0]=='x' && s[1]=='y' && s[2]=='z'
これは (せいぜい) 最初の 3 文字だけを調べます。コンパイル時に不明な文字列を一般化するには、上記をループに置き換える必要があります。
// look for t at the start of s
for (int i=0; i<s.length(); i++)
{
if (s[i]!=t[i])
return false;
}
于 2009-05-31T10:51:31.587 に答える