C++11 a ajouté quelques nouvelles fonctions de conversion de chaînes de caractères :
http://en.cppreference.com/w/cpp/string/basic_string/stoul
Il comprend stoi (chaîne vers int), stol (chaîne vers long), stoll (chaîne vers long long), stoul (chaîne vers long non signé), stoull (chaîne vers long non signé). La fonction stou (string to unsigned) brille par son absence. Y a-t-il une raison pour laquelle elle n'est pas nécessaire alors que toutes les autres le sont ?
liés : Pas de fonctions "sto{short, unsigned short}" en C++11 ?
0 votes
Non constructif, pour la même raison que l'autre question n'est pas constructive.
7 votes
Ma question était plutôt du type "y a-t-il un inconvénient non évident à utiliser simplement stoul". Il est évident que cela va perturber l'instanciation des modèles, mais y a-t-il autre chose que je n'ai pas pris en compte ? Des commentaires sur les raisons de cette omission seraient bienvenus, mais secondaires.
20 votes
@NicolBolas Je ne vois pas en quoi cela n'est pas constructif. C'est une question parfaitement valide car je ne vois pas de raison à cette incohérence et les réponses peuvent donner un aperçu d'une raison valable mais pas si évidente.
0 votes
@DavidStone sur mon compilateur (et mon ordinateur est typique),
unsigned long
est de la même taille et a la même capacité de stockage queunsigned int
6 votes
@SethCarnegie Eh bien, ce que votre plateforme (et peut-être la majorité des plateformes) fait n'est pas pertinent, parce qu'une
unsigned long
juste est nonunsigned int
.6 votes
@SethCarnegie : sur mon ordinateur habituel,
unsigned long
est de 64 bits, etunsigned int
32. Ce sont des types différents, et on ne peut pas supposer qu'ils sont identiques l'un à l'autre.0 votes
@ChristianRau : La raison pour laquelle ce n'est pas constructif est pour la même raison que l'autre question a été fermée : ce serait purement spéculatif.
3 votes
Comme indiqué, l'OP (et moi) ne sait pas que c'est spéculatif, car il pourrait y avoir une raison parfaitement valide pour cela, enfouie profondément dans les internes du langage C++. Mais puisque vous dites que c'est spéculatif, je suppose qu'il n'y a pas de telle raison. Mais encore une fois, peut-être qu'une personne responsable de C++11 peut quand même répondre à cette question. Il ne s'agit pas d'un "Wah wah, où est cette satanée".
stou
"mais une question demandant une raison possiblement définitive pour cette incohérence évidente. Si vous connaître il n'y a pas de raison de le faire, alors, postez-le comme réponse.3 votes
Oi. Dépêchez-vous de fermer ça pour que je puisse voter pour la réouverture.
0 votes
@Nicol : Le raisonnement derrière les décisions du comité n'est-il pas accessible au public ? Il me semble que cette question ne peut avoir qu'une réponse spéculative.