[解決済み] ある文字列が他の文字列で始まっているかどうかをチェックするには?
2023-01-05 14:40:43
質問
のようなものはありますか?
startsWith(str_a, str_b)
のようなものが標準のCライブラリにありますか?
nullbytesで終わる2つの文字列へのポインタを取り、最初の文字列が2番目の文字列の最初にも完全に現れるかどうかを教えてくれるはずです。
例を挙げます。
"abc", "abcdef" -> true
"abcdef", "abc" -> false
"abd", "abdcef" -> true
"abc", "abc" -> true
どのように解決するのですか?
どうやら、このためのCの標準的な関数はないようです。というわけで。
bool startsWith(const char *pre, const char *str)
{
size_t lenpre = strlen(pre),
lenstr = strlen(str);
return lenstr < lenpre ? false : memcmp(pre, str, lenpre) == 0;
}
上記はわかりやすくていいのですが、タイトなループでやっていたり、あるいは
非常に
のような大きな文字列を扱う場合、両方の文字列の全長を前もってスキャンしてしまうため、最高のパフォーマンスを提供するわけではありません (
strlen
). 解決策としては
wj32の
または
クリストフ
はより良いパフォーマンスを提供するかもしれません (ただし
このコメント
は私のC言語の知識を超えています)。また
Fred Foo の解決策
を回避する
strlen
で
str
(を使用する場合は不要です。
strncmp
の代わりに
memcmp
). (非常に) 大きな文字列や、タイトなループで繰り返し使用する場合にのみ重要ですが、重要なときは重要です。
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] ある文字列が他の文字列と "StartsWith" しているかどうかを確認する方法は?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
[C] Error [Error] 代入の左オペランドとして lvalue が必要です。
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] Linux Socket write() によるBad File Descriptor C
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] ++iとi++の違いは何ですか?