Comment vérifier si la chaîne est dans un tableau de chaînes
#include <iostream>
#include <string>
using namespace std;
bool in_array(string value, string *array)
{
int size = (*array).size();
for (int i = 0; i < size; i++)
{
if (value == array[i])
{
return true;
}
}
return false;
}
int main() {
string tab[2] = {"sdasd", "sdsdasd"};
string n;
cin >> n;
if (in_array(n, tab)) {
}
return 0;
}
Je veux vérifier en C++ si n chaîne est en onglet tableau, mais le code renvoie une erreur.
Ce que je fais de mal? Je devrais peut-être utiliser les vecteurs?
source d'informationauteur user3050705
Vous devez vous connecter pour publier un commentaire.
Il ne sera pas vous dire la taille de
array
il vous indique la longueur de la première chaîne dans ce tableau, vous devez passer à la longueur du tableau à la fonction séparément. La fonction devrait ressembler à:Mais un meilleur choix est d'utiliser
std::vector
etstd::find
:et puis, vous pouvez l'utiliser comme:
Lors du passage d'un tableau en argument d'une fonction qui ne prend qu'un pointeur, vous ne pouvez pas interroger la taille de la matrice au sein de la fonction (depuis qu'il a obtenu converti en "stupide" pointeur vers le premier élément, rien de plus). Généralement, vous ajoutez un "comptage" des paramètres de votre signature ou une "fin" itérateur à la place.
Ce que vous essayez de mettre en œuvre est fondamentalement
std::find
. Il prend deux itérateurs (début et la fin de la séquence) et l'élément à être trouvé. Tout simplement utiliser cette fonction.retourne un itérateur sur l'élément si il a été constaté, à la fin de l'itérateur autrement. La vérification de l'égalité avec la fin de l'itérateur est vous dire si l'élément a été trouvé dans le tableau.
Si vous n'aimez pas le "interface iterator" de la std algorithmes, vous pouvez atteindre votre PHP-comme la signature d'emballage autour
std::find
en utilisant un modèle de fonction:Veuillez noter: Cette réponse suppose de C++11. Si vous utilisez une ancienne compilateur, il ne pourrait pas travailler ou qu'il ne fonctionne que si vous ajoutez
-std=c++11
les drapeaux du compilateur.