C++ Conversion de string vers long

C++ Conversion de string vers long - C++ - Programmation

Marsh Posté le 25-01-2007 à 22:34:02    

Comment convertir de type string vers long?
 
En C++.
 
Merci de votre aide!

Reply

Marsh Posté le 25-01-2007 à 22:34:02   

Reply

Marsh Posté le 26-01-2007 à 08:56:41    

Reply

Marsh Posté le 28-01-2007 à 17:20:33    

Il n'existe pas de type "string" en C ou C++ !
Pour convertir à peu prés n'inporte quoi vers à peu prés n'importe quoi il y les fonctions standards "scanf" et "printf" (et les variantes).
Sinon la conversion d'une suite de caractères en entier est véritablement trés simple.

Reply

Marsh Posté le 28-01-2007 à 17:41:41    

stabia a écrit :

Il n'existe pas de type "string" en C ou C++ !


Il existe un type string en C++ : std::string.
 

stabia a écrit :

Pour convertir à peu prés n'inporte quoi vers à peu prés n'importe quoi il y les fonctions standards "scanf" et "printf" (et les variantes).


... ce qui n'est pas la meilleure façon de faire. Le lien posté par Taz pointe la méthode que préconise les experts des newsgroups qui ont contribués à cette FAQ. Il est légitime de penser que c'est la meilleure méthode.

Reply

Marsh Posté le 28-01-2007 à 18:54:50    

"There are two easy ways to do this: you can use the <cstdio> facilities"

 

C'est la première phrase du lien ...

 

Tout dépend de ce que l'on cherche à faire, ou à enseigner ; dans la pratique je ne vois aucune raison valable, dans la majeure partie des cas, de se priver du recours simplissime aux bibliothèques standards.

 

"The sequences controlled by an object of template class basic_string are the Standard C++ string class and are usually referred to as strings, but they should not be confused with the null-terminated C-strings used throughout the Standard C++ Library. The string class is a container that enables the use of strings as normal types, such as using comparison and concatenation operations, iterators, and STL algorithms and copying and assigning with class allocator managed memory." (origine Microsoft)

 

C'est dans ce sens-la que je disais qu'il n'y avait pas de type "string", c'est vrai que j'ai le défaut des programmeurs en assembleur passés au C (puis C++) je suis rétif à la perte de controle. Habitué à inclure et lier ma propre classe j'en ai oublié "std::string" que je crois n'avoir jamais utilisé.
Merci de m'avoir rappelé son existence. Mais franchement
        int nombre = sscanf(tp, "%d", &resultat);
c'est quand même assez trivial, non ?

Message cité 1 fois
Message édité par stabia le 28-01-2007 à 18:55:57
Reply

Marsh Posté le 29-01-2007 à 01:30:09    

stabia a écrit :

"There are two easy ways to do this: you can use the <cstdio> facilities"

 

C'est la première phrase du lien ...

 

Tout dépend de ce que l'on cherche à faire, ou à enseigner ; dans la pratique je ne vois aucune raison valable, dans la majeure partie des cas, de se priver du recours simplissime aux bibliothèques standards.


Je pense que la moindre des choses serait de citer la seconde phrase (In general, you should prefer the <iostream> library.), ainsi que de lire le lien en question (dont la première phrase est: Increase type safety, reduce errors, allow extensibility, and provide inheritability.). Question d'honnêteté [:spamafote]

 
stabia a écrit :

Habitué à inclure et lier ma propre classe j'en ai oublié "std::string" que je crois n'avoir jamais utilisé.


Tu n'as même pas une raison valide pour avoir fait ce remplacement?? Comment sais-tu si ta classe est au moins aussi sûre que la leur? Et quid de l'utilisation avec les streams? (mince, j'ai utilisé deux mots pas français :/)

stabia a écrit :

Mais franchement
        int nombre = sscanf(tp, "%d", &resultat);
c'est quand même assez trivial, non ?


Franchement bof :D (edit: pour du C++, puisqu'on est dans cette cat')
Qu'est ce qui ne l'est pas dans le lien donné par Taz? Si tu ne connais pas les streams flux, pardon, intéresses toi à eux, et apprend à programmer en c++ plutôt qu'en C, quitte à renier certains préceptes...


Message édité par IrmatDen le 29-01-2007 à 01:30:47
Reply

Marsh Posté le 29-01-2007 à 10:31:28    

qu'elle agressivité, vos vingt ans vous travaillent-ils ?
 "two easy ways" c'est assez clair non ?
 
Je n'ai jamais dis que ma classe avait une quelconque supériorité, il se trouve que j'avais oublié l'autre et que la mienne me suffit (en plus elle est liée à d'autres que j'ai développé conjointement).
Quand à l'utilisation des flux je ne vois pas ou serait le problème, mais je vais demander aux centaines d'utilisateurs de mes programmes, à travers toute l'Europe, s'ils sont victimes de mon incompétence et bien sur de mon arrogance Française !
 
Je me méfie toujours des gardiens du Temple, plus purs que les autres, imbus de leurs certitudes, prêt à en découdre pour un verset mal récité.
Lorsque je programme je poursuis trois buts :
1/ un programme qui fonctionne dans l'environnement pour lequel il à été écrit (et je ne parle pas uniquement de l'environnement informatique);
2/ un programme que je pourrais comprendre sans effort dans 6 mois (et plus);
3/ un programme que je peux réaliser dans de bonnes conditions économiques.
 Je me moque éperdument des querelles stériles de chapelles, la programmation objet "pure" est une masturbation intellectuelle de chercheurs ou d'étudiants, la recherche de la "portabilité" est généralement inutile, se tordre l'esprit et l'imagination pour faire rentrer des structures logiques dans un canevas normatif C++ est contre-productif.
 La première qualité d'un logiciel : c'est qu'il fonctionne !
 
 
Certainement il  faut que j'apprenne le C++, mais en attendant la programmation me rapporte, depuis 23 ans, de quoi bien vivre, en toute indépendance, et en plus cela continue à être un plaisir, alors mon petit bonhomme tes leçons tu peux te ....

Reply

Marsh Posté le 29-01-2007 à 10:47:16    

stabia a écrit :

quelle agressivité, vos vingt ans vous travaillent-ils ?

C'est toi que je trouve particulièrement agressif...

 

Tu as peut-être une grande expérience en C, mais visiblement pas en C++. Donc ne t'étonne pas si on te reprend lorsque tu dis des énormités ("il n'existe pas de type string en C++" ) ou indiques des solutions "purement C" à un problème qui est, de l'avis de beaucoup, mieux traité par les solutions spécifiques au C++.
Conseiller à un débutant l'utilisation de scanf est à mon avis vraiment une erreur. Tu arrives sans doute à l'utiliser correctement dans tes bibliothèques, mais tu ne peux pas supposer que n'importe qui est en mesure de mettre en place proprement ce genre de techniques.


Message édité par franceso le 29-01-2007 à 10:48:23

---------------
TriScale innov
Reply

Marsh Posté le 29-01-2007 à 11:16:01    

@Stabia: dommage que tu ais pris ma réponse comme de l'agressivité, ce n'était pas le but. Mes excuses si je t'ai paru pédant en plus... (Et pour ce qui est du français, c'était plutôt de la taquinerie suite à tes posts récents qu'autre chose ;)).
 
Pour que tu saches, contrairement à toi, je ne suis pas dev pro, je n'ai pas écris 100 logiciels pour des grands comptes ou autre, et je suis nettement moins bon qu'un certain nombre de personnes ici, comme taz, ++fab et autres Svear, Harko...
Ce que je vois, c'est qu'on est en cat C++, et que je m'efforce de répondre avec le langage, pas avec celui que je maitrise le mieux (bon, qui se trouve être celui-là ceci dit :D).

Reply

Marsh Posté le 29-01-2007 à 11:20:47    

Mon agressivité est une réponse, je n'en n'ai pas pris l'initiative.
Il est vrai que je programme dans un mélange C/C++, comme la plupart des productifs. C'est un choix délibéré, une expérience ADA m'ayant incité à une réflexion sur la nature même de notre (? je suppose) métier.
Plus généralement je ne crois pas -plus- à la pertinence des évolutions de l'informatique, les coûts deviennent colossaux pour des gains de productivité de plus en plus ténus.
Au même titre que la recherche -fondamentale ou appliquée- commence à resserrer les équipes, je crois qu'il faudra revenir à une programmation moins modulaire, plus linéaire, avec des équipes plus réduites et moins d'obsessions : bref plus humaine.
Votre dernier paragraphe implique bien des choses, je n'ai pas l'expérience de l'enseignement, mais j'ai celle de la formation en entreprise ; je ne m'inscris pas en faux de votre propos, mais je pense qu'il ne s'agit pas d'une vérité générale.

Reply

Marsh Posté le 29-01-2007 à 11:20:47   

Reply

Marsh Posté le 29-01-2007 à 12:23:24    

Bonjour;
 
J'ai le soucis suivant:
-L'an dernier, j'ai étais dans une école oà on programme avec C++ sous linux donc ce que je veux dire tout mes programmes sont fais en C++ sous LINUX et cette année j'ai changé d'école là on a pas de station de travaille. Alors j'ai télécharger DEV-C++, mais le problème je ne sais pas par exemple comment compiler? de même comment exucter??  
 
Merci pour votre aide

Reply

Marsh Posté le 29-01-2007 à 16:04:50    

J'ai une expérience dans les deux C et C++, et aussi dans d'autres, c'est justement pour cela que je programme aujourd'hui dans un mélange des deux ; en attendant de pouvoir refaire des applications complètes en assembleur, qui est ce qui m'offre le plus de plaisir (le 68030 était un vrai régal !).
J'ai écris sans doute une centaine de logiciels, mais ceux qui m'ont fait vivre sont bien moins nombreux (3 ces 5 dernières années).
En ecrivant mes messages je voulais surtout tenter de décloisonner, je comprend bien qu'il faille, pour des raisons pédagogiques, aller jusqu'au bout de la logique d'un langage, mais je crois qu'il faut ensuite prendre de la distance ... l'observation du code généré par les compilateurs est trés instructive des limites des langages "objets".
Programmer ce n'est pas utiliser des recettes aprés avoir déterminer au moyen d'outils pré-formatés les besoins et la structuration du logiciel ; je crains que ce soit trop souvent le cheminement qui est enseigné.

Reply

Marsh Posté le 29-01-2007 à 17:42:18    

stabia a écrit :


la programmation objet "pure" est une masturbation intellectuelle de chercheurs ou d'étudiants, la recherche de la "portabilité" est généralement inutile, se tordre l'esprit et l'imagination pour faire rentrer des structures logiques dans un canevas normatif C++ est contre-productif.


 
[:violon] faut arreter un peu l'elitisme de bas étages ...

Reply

Marsh Posté le 29-01-2007 à 18:33:47    

stabia a écrit :


la programmation objet "pure" est une masturbation intellectuelle de chercheurs ou d'étudiants, la recherche de la "portabilité" est généralement inutile, se tordre l'esprit et l'imagination pour faire rentrer des structures logiques dans un canevas normatif C++ est contre-productif.


 
OSEF de la POO, ce qui compte c'est la conception. Et on voit pas le rapport avec la portabilité ni en quoi faut être imaginatif.
 
Et puis moi d'abord, j'ai écris 1000 logiciels en ASM# sur robot ménager, c'est moi qui ait le plus d'expérience. Na!

Reply

Marsh Posté le 29-01-2007 à 19:37:50    

stabia a écrit :

qu'elle agressivité, vos vingt ans vous travaillent-ils ?
 "two easy ways" c'est assez clair non ?


La suite aussi est assez claire, bref.
 

Citation :

Je me méfie toujours des gardiens du Temple, plus purs que les autres, imbus de leurs certitudes, prêt à en découdre pour un verset mal récité.


?
 

Citation :

Lorsque je programme je poursuis trois buts :
1/ un programme qui fonctionne dans l'environnement pour lequel il à été écrit (et je ne parle pas uniquement de l'environnement informatique);
2/ un programme que je pourrais comprendre sans effort dans 6 mois (et plus);
3/ un programme que je peux réaliser dans de bonnes conditions économiques.
 Je me moque éperdument des querelles stériles de chapelles, la programmation objet "pure" est une masturbation intellectuelle de chercheurs ou d'étudiants, la recherche de la "portabilité" est généralement inutile, se tordre l'esprit et l'imagination pour faire rentrer des structures logiques dans un canevas normatif C++ est contre-productif.
 La première qualité d'un logiciel : c'est qu'il fonctionne !
 
Certainement il  faut que j'apprenne le C++, mais en attendant la programmation me rapporte, depuis 23 ans, de quoi bien vivre, en toute indépendance, et en plus cela continue à être un plaisir, alors mon petit bonhomme tes leçons tu peux te ....


 
A te lire - au nombre de "je" employés et à la présence du mot "indépendance" - tu n'évolues pas dans des projets impliquant plusieurs développeurs. Vu que tu ne quotes pas ce à quoi tu réponds, je vais supposer que c'était la question d'utiliser du C++ de "puriste" qui t'as fait aligner 3 points. Je ne comprends pas la signification profonde du point 1/, mais les points 2/ et 3/ peuvent plus facilement être mis à la première personne du pluriel si tu utilises la bibliothèques standard que tout le monde connait bien.
 

Reply

Marsh Posté le 29-01-2007 à 19:43:36    

stabia a écrit :

Plus généralement je ne crois pas -plus- à la pertinence des évolutions de l'informatique, les coûts deviennent colossaux pour des gains de productivité de plus en plus ténus.


Quelles évolutions ?
 

Citation :

Au même titre que la recherche -fondamentale ou appliquée- commence à resserrer les équipes, je crois qu'il faudra revenir à une programmation moins modulaire, plus linéaire, avec des équipes plus réduites et moins d'obsessions : bref plus humaine.


?
 
 

Reply

Marsh Posté le 29-01-2007 à 19:51:34    

stabia a écrit :

En ecrivant mes messages je voulais surtout tenter de décloisonner, je comprend bien qu'il faille, pour des raisons pédagogiques, aller jusqu'au bout de la logique d'un langage, mais je crois qu'il faut ensuite prendre de la distance ... l'observation du code généré par les compilateurs est trés instructive des limites des langages "objets".


Parles-tu du C++ ? Et si oui, peux-tu donner un exemple de construction qui montre les limites de l'orientation objet du langage C++ ?
 

Citation :

Programmer ce n'est pas utiliser des recettes aprés avoir déterminer au moyen d'outils pré-formatés les besoins et la structuration du logiciel ; je crains que ce soit trop souvent le cheminement qui est enseigné.


(de plus en plus perplexe) Alors que conseilles-tu ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed