J'ai quelque chose comme ça. Le problème est que les chaînes ne doivent être que des lettres, comment puis-je faire cela? Cela fait quelques heures que je suis assis dessus et je ne trouve aucune solution de travail. J'ai essayé d'utiliser les réponses de ce sujet Accept only letters mais je suppose que je suis trop stupide et ne peut toujours pas faire fonctionner :(Chaîne C++ seulement lettres
#include <string>
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
int main(void)
{
vector <string> strings;
string line;
do
{
cout << "enter string, 'stop' stops: ";
cin >> line;
strings.push_back(line);
}
while (line != "stop");
vector <string> :: iterator w;
cout << "Before sorting \n";
for (w=strings.begin(); w!=strings.end(); w++)
cout << *w << endl;
sort (strings.begin(),strings.end());
cout << "After sorting \n";
for (w=strings.begin(); w!=strings.end(); w++)
cout << *w << endl;
}
Dans la boucle while vous devez itérer la chaîne et si une lettre dans ce n'est pas une lettre que vous devriez pas le repousser dans le vecteur des cordes. Pour vérifier si une lettre est alphabétique, vous pouvez utiliser 'std :: isalpha' http://www.cplusplus.com/reference/cctype/isalpha/ – 101010
Votre boucle serait mieux comme' while ((std :: cin >> line) && (line! = "stop")) {strings.push_back (ligne);} '. De cette façon, vous n'obtenez pas l'élément supplémentaire et vous savez que la lecture a réussi avant d'utiliser la valeur. Il est également très facile d'ajouter une autre vérification pour que la chaîne ne soit que des lettres, ou de combiner la condition dans une fonction 'readString'. – ghostofstandardspast
@ 40two, Plutôt que de boucler vous-même, j'utiliserais 'std :: all_of'. – ghostofstandardspast