Comment utiliser pour chaque boucle en c++
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main() {
string str("hello world!");
for (auto &c : str)
c = toupper(c);
cout << str;
return 0;
}
Ce c++ code ne compile pas.
Erreur msg:
principal.rpc:21: erreur: une fonction de définition n'est pas autorisé ici avant ':' token
Question:
Est-il un pour chaque boucle en c++ (gamme de boucle?)?
quel est le problème avec la boucle for each ci-dessus?
Merci d'avance.
Il existe en C++11. Assurez-vous d'utiliser un compilateur qui peut manipuler le C++11, et assurez-vous d'activer les options requises pour cela.
stackoverflow.com/q/15027282/62576
stackoverflow.com/q/15027282/62576
OriginalL'auteur Ra1nWarden | 2013-06-24
Vous devez vous connecter pour publier un commentaire.
Le code est valide, comme l'a démontré sur un en ligne compilateur.
Veuillez consulter votre documentation du compilateur pour être sûr que vous avez activé le C++11. L'option est souvent appelé
-std=c++11
. Vous pourriez avoir à télécharger une mise à niveau; consultez votre gestionnaire de paquets pour GCC (actuellement à 4,8) ou Clang (actuellement 3.3).OriginalL'auteur Potatoswatter
Avant C++11,
for_each
est définie dans lealgorithm
en-tête.Utilisez simplement:
où
fn
est une fonction pour laquelle l'élément sera passé, et les deux premiers arguments d'entrée sont des itérateurs.Aussi, à la suite notamment de deux
string
etalgorithm
vous pouvez simplement utiliserstd::transform(str.begin(), str.end(),str.begin(), ::toupper);
std::for_each
est toujours défini dans lealgorithm
en-tête, même en C++11. (La gamme à base de boucle introduit par le C++11 dans la langue de base n'a pas remplacé lestd::for_each
algorithme, même si il ya un certain chevauchement dans les cas d'utilisation.)OriginalL'auteur Hut8