string ou char * ? - C++ - Programmation
Marsh Posté le 22-02-2003 à 14:20:15
Ouh là, c'est de la graine de troll !
Je dirais : si t'es en C++, utilises string.
Marsh Posté le 22-02-2003 à 14:22:06
Ôh grand manitou, excuse moi pr ce malheureux troll.
merki
Marsh Posté le 22-02-2003 à 14:28:31
tu te poses vraiment la question ou c'est un troll du vendredi qui est un peu à la bourre?
Marsh Posté le 22-02-2003 à 15:54:29
ReplyMarsh Posté le 22-02-2003 à 16:02:09
lapiou a écrit : bonjour, |
avec le std::string, on peut faire bien plus de choses, tout cela de façon sure: j'ai beau chercher, je ne vois aucune raison de préferer les char*
Marsh Posté le 22-02-2003 à 17:54:17
++Taz a écrit : avec le std::string, on peut faire bien plus de choses, tout cela de façon sure: j'ai beau chercher, je ne vois aucune raison de préferer les char* |
Surtout que si éventuellement t'es pas jouasse avec la version classique des strings, tu crées la tienne, et (normalement) personne n'y voit que du feu.
Marsh Posté le 23-02-2003 à 00:32:36
++Taz a écrit : avec le std::string, on peut faire bien plus de choses, tout cela de façon sure: j'ai beau chercher, je ne vois aucune raison de préferer les char* |
Tu ne peux pas creer de string en static,
j'ai beau me creuser la tete, toute creation
de std::string a partir d'un litteral me dupliquera
la chaine quelque part..
(pas bien grave je le reconnais mais c'est pour l'anecdote)
LeGreg
Marsh Posté le 23-02-2003 à 00:40:23
oui ça dupliquera, cependant tu peux quand meme avoir string static. la duplication est sans doute une bonne chose, elle evitera les problèmes qu'on pourait avoir en modification, par ce que les pointeurs, meme const, c'est pas terrible niveau sécurité. de meme, pas moyen passer outre une const string (sauf si c'est ce qu'on cherche)
Marsh Posté le 23-02-2003 à 03:26:26
"je ne peux pas manger a ma faim mais c'est sans doute
une bonne chose au moins je ne peux pas devenir trop gros.."
LeGreg
Marsh Posté le 24-02-2003 à 09:02:03
Un seul cas ou le char * est mieux que le string, c'est lorsqu'on est tenté de faire un peu trop de concaténation (très lourde en string).
C'est pas rare que sur certain programme de parsing (ou tu ne fait que du traitement sur du texte) tu gagnes 50% de vitesse en plus. Mais pour tout autre utilisation s'est mieux les strings.
Marsh Posté le 24-02-2003 à 09:15:16
(stupid question : la std::string permet elle le formatage facon sprintf ?)
Marsh Posté le 24-02-2003 à 09:55:30
chrisbk a écrit : (stupid question : la std::string permet elle le formatage facon sprintf ?) |
t'as les flux sur les chaines pour ca (std:: ostringstream)
Marsh Posté le 24-02-2003 à 18:41:11
Citation : Un seul cas ou le char * est mieux que le string, c'est lorsqu'on est tenté de faire un peu trop de concaténation (très lourde en string). |
meme pas, reserve() permet d'éliminer le probleme
Marsh Posté le 24-02-2003 à 18:50:29
de toutes façons quand on commence à voulir un peut trop jouer avec les char* brutes, on finit vite par se vautrer comme une otarie bourrée
Marsh Posté le 25-02-2003 à 23:06:04
HelloWorld a écrit :
|
J'ai dit qu'on était tenté. L'écriture est tellement plus simple qu'avec des char *, mais ca fait aussi beaucoup de trucs.
La preuve avant-hier un type qui était à coté de moi vient de s'apercevoir qu'il avez fait de jolies concaténations qui lu bouffait plus de la moitier du traitement (donc traitement en char * pour passer en string).
Tu te rend compte que les strings même avec le reserve() bouffe un poil plus que les char * (et il faut se méfier des copy constructeur qui se font si on n'y fait pas gaffe). Mais comme on s'en sert pas pour des gros traitement temps réel c'est pas grave, et c'est bien plus sur.
C'est très dangereux les char* et les fuites de mémoire les adorent (ca m'empêche pas de les utiliser sur les "one man projet" ).
Marsh Posté le 25-02-2003 à 23:18:07
hercule a écrit : Un seul cas ou le char * est mieux que le string, c'est lorsqu'on est tenté de faire un peu trop de concaténation (très lourde en string). |
je comprends pas, strcat est obligé de parcourir les 2 chaines alors que dans la version de base de string, la longueur est stockée. D'autre part, je vois pas pourquoi ne pas utiliser un streamBuffer ?
Au passage : spéciale gueulante contre java avec son toString() à la con alors que smalltalk avait printOndisplayOn: qui te permets d'économiser de la mémoire (puisque tu peux le faire directement sur le buffer de sortie sans créer la chaîne intermédiaire).
Marsh Posté le 25-02-2003 à 23:27:05
+1 pr l'utilisation de strstream.
c bien utile et bien pensé
Marsh Posté le 23-03-2003 à 02:28:12
nraynaud a écrit : Surtout que si éventuellement t'es pas jouasse avec la version classique des strings, tu crées la tienne, et (normalement) personne n'y voit que du feu. |
triple négation...
Donc on s'en rend compte ?
Marsh Posté le 22-02-2003 à 14:13:02
bonjour,
quand on prgm en C++ une application, vaut-il mieux utiliser le type string ou char * ? peut-on faire les memes choses avec les 2?