Existe-t-il un moyen en C++ de vérifier si une chaîne de caractères commence par une certaine chaîne (plus petite que l'originale) ? Comme on peut le faire en Java
bigString.startswith(smallString);
Existe-t-il un moyen en C++ de vérifier si une chaîne de caractères commence par une certaine chaîne (plus petite que l'originale) ? Comme on peut le faire en Java
bigString.startswith(smallString);
Avec C++20, vous pouvez utiliser std::basic_string::starts_with
(o std::basic_string_view::starts_with
) :
#include <string_view>
std::string_view bigString_v("Winter is gone"); // std::string_view avoids the copy in substr below.
std::string_view smallString_v("Winter");
if (bigString_v.starts_with(smallString_v))
{
std::cout << "Westeros" << bigString_v.substr(smallString_v.size());
}
strstr()
renvoie un pointeur sur la première occurrence d'une chaîne dans une chaîne.
J'ai pensé qu'il était logique de poster une solution brute qui n'utilise aucune fonction de la bibliothèque...
// Checks whether `str' starts with `start'
bool startsWith(const std::string& str, const std::string& start) {
if (&start == &str) return true; // str and start are the same string
if (start.length() > str.length()) return false;
for (size_t i = 0; i < start.length(); ++i) {
if (start[i] != str[i]) return false;
}
return true;
}
L'ajout d'un simple std::tolower
nous pouvons faire en sorte que cela ne soit pas sensible à la casse
// Checks whether `str' starts with `start' ignoring case
bool startsWithIgnoreCase(const std::string& str, const std::string& start) {
if (&start == &str) return true; // str and start are the same string
if (start.length() > str.length()) return false;
for (size_t i = 0; i < start.length(); ++i) {
if (std::tolower(start[i]) != std::tolower(str[i])) return false;
}
return true;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.