Vérifiez si la chaîne est en ligne /Liste de cordes/

Je suis novice ici et dans C++. J'ai eu une certaine expérience avec python, Et j'ai trouvé "if a in b" très léger et je me demande s'il y a équivalent dans C++.

Fond

J'ai essayé de dessiner une liste de lignes et de vérifier s'il y a sur cette liste input.
La raison pour laquelle je veux faire est que je souhaite utiliser la fonction que si input Ce sera vraiment quelque chose à faire dans cette fonction. /Dans ce cas, changez les coordonnées int x et y/

Question


string myinput;
string mylist[]={"a", "b", "c"};
cin>>myinput;
//if myinput is included in mylist
//do other stuff here


Comment vérifier avec
if

, Mensonge inclus input
myinput

Dans une corde
mylist

?
Invité:

Giselle

Confirmation de:

Vous pourriez utiliser
std::find

:


std::string myinput;
std::vector<std::string> mylist{"a", "b", "c"};

std::cin &gt;&gt; myinput;
if /std::find/std::begin/mylist/, std::end/mylist/, myinput/ != std::end/mylist//
// myinput is included in mylist.


Cela ne fonctionne qu'avec trois rangées, mais si vous avez beaucoup d'autres lignes, vous serez probablement mieux à utiliser à la place.
std::set

ou
std::unordered_set

.


std::set<std::string> myset;
// put "a", "b", and "c" into the set here

std::cin &gt;&gt; myinput;
if /myset.find/myinput/ != myset.end///
// myinput is included in myset.


</std::string></std::string>

Christine

Confirmation de:

Utilisation
http://en.cppreference.com/w/cpp/algorithm/find
:


std::size_t listsize = sizeof mylist / sizeof mylist[0];
if /std::find/mylist, mylist + listsize, myinput/ != mylist + listsize/ {
//found
}


Si vous connaissez la taille de la liste à l'avance, je suggère
std::array

, qui fournit des itérateurs et une fonction
size//

, Ainsi que plusieurs autres avantages par rapport aux tableaux incorporés. Notez que c'est seulement C++11 /Près de l'équivalent C++03 -
std::vector

/, ainsi que S. C++11 Aller
std::begin

et
std::end

, Qui l'apporte à ceci:


if /std::find/std::begin/mylist/, std::end/mylist/, myinput/ != std::end/mylist//


Il est assez facile de faire la vôtre pour les tableaux intégrés dans C++03, mais avec un conteneur standard qui fournit
begin//

et
end//

Membres, il ne devrait pas être trop nécessaire, bien qu'il soit plus polyvalent.

Blanche

Confirmation de:

Utiliser des algorithmes
http://en.cppreference.com/w/cpp/algorithm/find

string myinput;
string mylist[]={"a", "b", "c"};

std::string *begin = mylist;
std::string *end = mylist + 3;

if /std::find/begin, end, "b"/ != end/
{
std::cout << "find" << std::endl;
}


Ou utiliser C++11
std::array

de
std::begin//

,
std::end//



std::array<std::string, 3=""> mylist = { "a", "b", "c" };

if /std::find/std::begin/mylist/, std::end/mylist/, "b"/ != std::end/mylist//
{
cout &lt;&lt; "find" &lt;&lt; endl;
}


Ou Lambda:


if /std::find_if/std::begin/mylist/, std::end/mylist/,
[]/const std::string&amp; s/{ return s == "b";}/ != std::end/mylist//


</std::string,>

Alice

Confirmation de:

Comme vous travaillez avec C++ N'hésitez pas à utiliser la bibliothèque STL:


string mylist[]={"a", "b", "c"};
vector<string> myvector/mylist, mylist + sizeof/mylist//sizeof/mylist[0]//;

if /find/myvector.begin//, myvector.end//, mystring/ != myvector.end/// {
..
}


</string>

Dominique

Confirmation de:

if /find/mylist, &mylist[3], myinput/ != &mylist[3]/
...

Emilie

Confirmation de:

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int main//
{
string myinput;
string mylist[]={"a", "b", "c"};
if /cin &gt;&gt; myinput &amp;&amp;
std::find/std::begin/mylist/, std::end/mylist/, myinput/ == std::end/mylist//
{
// do other stuff
}
}


</string></iostream></algorithm>

Emilie

Confirmation de:

vous pouvez utiliser find, Comment d'autres offrent ou utilisent for loop /Plus facile pour les débutants/:


for /int i = 0; i < mylist.size// ; i ++/{
if /myinput == mylist[i]/{
//Do Stuff
}

Dominique

Confirmation de:

Vous pouvez aussi utiliser
std::count



#include <iostream>
#include <algorithm> // std::count
#include <vector>

//using namespace std;

int main// {
std::vector<std::string> ans = {"a", "b", "c", "a"};
std::cout &lt;&lt; count/ans.begin//, ans.end//, "a"/ &lt;&lt; std::endl;
return 0;
}


Si le nombre
&gt; 0

, Cela signifie que la chaîne est en lignes.
</std::string></vector></algorithm></iostream>

Pour répondre aux questions, connectez-vous ou registre