string ou char * ?

string ou char * ? - C++ - Programmation

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?

Reply

Marsh Posté le 22-02-2003 à 14:13:02   

Reply

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.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 22-02-2003 à 14:22:06    

Ôh grand manitou, excuse moi pr ce malheureux troll.
merki ;)

Reply

Marsh Posté le 22-02-2003 à 14:28:31    

:heink: tu te poses vraiment la question ou c'est un troll du vendredi qui est un peu à la bourre?

Reply

Marsh Posté le 22-02-2003 à 15:51:21    

CString

Reply

Marsh Posté le 22-02-2003 à 15:54:29    


 
[:tapai]


Message édité par Kristoph le 22-02-2003 à 15:54:49
Reply

Marsh Posté le 22-02-2003 à 16:02:09    

lapiou a écrit :

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?  

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*

Reply

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.

Reply

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


---------------
voxel terrain render engine | animation mentor
Reply

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)

Reply

Marsh Posté le 23-02-2003 à 00:40:23   

Reply

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


---------------
voxel terrain render engine | animation mentor
Reply

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.


---------------
Ils veulent la jouer hard, on va la jouer hard  
Reply

Marsh Posté le 24-02-2003 à 09:15:16    

(stupid question : la std::string permet elle le formatage facon sprintf ?)

Reply

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)


Message édité par gloop le 24-02-2003 à 09:55:39
Reply

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


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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

Reply

Marsh Posté le 25-02-2003 à 23:06:04    

HelloWorld a écrit :

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


 
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" ).
 
 


---------------
Ils veulent la jouer hard, on va la jouer hard  
Reply

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).
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.


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 printOn:/displayOn: 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).

Reply

Marsh Posté le 25-02-2003 à 23:27:05    

+1 pr l'utilisation de strstream.
c bien utile et bien pensé :)

Reply

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 ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

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