Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1653 connectés 

  FORUM HardWare.fr
  Programmation

  [C, C++] faire un array dynamique de strings...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C, C++] faire un array dynamique de strings...

n°257296
MrX
Posté le 29-11-2002 à 16:48:00  profilanswer
 

euh vala, moi j'utilise la class vector de vector.h pour mes array dynamique, mais quand je ve faire un truc du genre:
 vector<char[50]> string; il me pond un troll.... Par example quand je ve redimensionner l'array, il ve fait une erreur de compilation... et c'est po bo, snif
 
J'ai fait un truc moi meme qui marche mais c trés laid :
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <vector.h>
  4. struct string
  5. {
  6.     char *str;
  7. };
  8. void main()
  9. {
  10.     vector<string> a;
  11.     a.resize(10);
  12.     int i;
  13.    
  14.     for (i = 0; i<10; i++)
  15.     {
  16.     a[i].str = new char[50];//je doit faire ca pour chaque element de l'array, au secours !
  17.     itoa(i, a[i].str, 10);// pour verfier si l'array dynamique marche
  18.     strcat(a[i].str, " long long string...." );//pour verifier que je pe mettre plein de characteres...
  19.     cout<<a[i].str<<endl;
  20.     }
  21.     system("PAUSE" );
  22. }


 
Ben vala, j'avais prevenu c'est trés moche... Il doit y avoir bien plus propre que ca pour faire ca que je veux, a moins qu'il y ai une class faite exprés pour ca, a moins que j'utilise les vector n'importe comment, ou qu'il y ai mieux que les vector...

mood
Publicité
Posté le 29-11-2002 à 16:48:00  profilanswer
 

n°257297
BENB
100% Lux.
Posté le 29-11-2002 à 16:49:46  profilanswer
 

Pourquoi ne pas utiliser les string de la STL ?

n°257298
MrX
Posté le 29-11-2002 à 16:51:03  profilanswer
 

ben justement moi etre ignorant, moi pas connaitre hihi... STL, c t'y quoi dont ??

n°257305
El_gringo
Posté le 29-11-2002 à 16:58:09  profilanswer
 

MrX a écrit a écrit :

ben justement moi etre ignorant, moi pas connaitre hihi... STL, c t'y quoi dont ??




 
Standard Template Library, vector en fait partie !
C'est la librairie standard du C++

n°257306
BENB
100% Lux.
Posté le 29-11-2002 à 16:59:04  profilanswer
 

C'est une partie de la library standard du C++... d'ou tu sort ton vector d'ailleurs...
 
a ce propos #include<vector.h> ca marche ?
Ce devrait-etre <vector> sans le .h
 
de meme pour les string #include<string>
 
http://www.sgi.com/tech/stl/basic_string.html
 
sinon pour le vector evite le resize qui ajoute des elements ert prefere le reserve()...
 
sinon tu peux aussi faire des vector<char *>...

n°257313
MrX
Posté le 29-11-2002 à 17:02:38  profilanswer
 

aye j'ai lu un truc sur le stl, j'ai pigé ! (c rare par malheur...)
 
Merci pour le lien je vais m'y collé.
 
reserve connaissais po, y avait que resize dans mon tutorial
 
ben vala merci

n°257315
MrX
Posté le 29-11-2002 à 17:05:45  profilanswer
 

vector<char *> je vien d'essayer, ca marche trés bien, c mieux la string de chez STL ??

n°257320
BENB
100% Lux.
Posté le 29-11-2002 à 17:13:22  profilanswer
 

avec le char *  
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <vector>
  4. using namespace std;
  5. void main()
  6. {
  7.    vector<char *> a;
  8.    a.reserve(10);
  9.    int i;
  10.    
  11.    for (i = 0; i<10; i++)
  12.    {
  13.    a.push_back(new char[50]);
  14.    itoa(i, a[i], 10);
  15.    strcat(a[i], " long long string" );
  16.    cout<<a[i]<<endl;
  17.    }
  18.    system("PAUSE" );
  19. }

 
 
avec la string
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <vector>
  4. #include <string>
  5. using namespace std;
  6. void main()
  7. {
  8.    vector<string> a;
  9.    a.reserve(10);
  10.    int i;
  11.    
  12.    for (i = 0; i<10; i++)
  13.    {
  14.    char tempo[50];
  15.    itoa(i, tempo, 10);
  16.    a.push_back(tempo)
  17.    a[i].append(" long long string" );
  18.    cout<<a[i]<<endl;
  19.    }
  20.    system("PAUSE" );
  21. }

 
 
 
 
 

n°257350
MrX
Posté le 29-11-2002 à 18:53:57  profilanswer
 

c assez semblable, je prefere le char * . Thx pour l'aide

n°257385
tanguy
Posté le 29-11-2002 à 20:28:40  profilanswer
 

MrX a écrit a écrit :

je prefere le char *



 
NAN surtout pas !
 
il faut bruler les char *
 
habitue toi a programmer avec les string
 
- c'est beaucoup plus simple et de beaucoup
- c'est plus secure (pas de buffer overrun ou overflow)
- pas de fuite memoire car on doit pas gerer les malloc() et free()
- plus puissant : pleins de methods integrees utiles
- facilement convertissable avec la methode c_str()
- surement pleins d'autres avantages
 
le truc bien pourris en C c'est les char *
dire que Pascal qui a ete invente avant le C possede une classe string...
 
aouais au passage, y'a quelqu'un qui sait par quoi est remplace strtok() pour la classe string ?
parceque strtok ca sucks, y'a du static a l'interieur donc impossible de multithreader et puis ca fonctionne avec des char *, berk
 

mood
Publicité
Posté le 29-11-2002 à 20:28:40  profilanswer
 

n°257387
MrX
Posté le 29-11-2002 à 20:36:56  profilanswer
 

j'ai encore dit une connerie comme d'hab... sans espoir... merci du conseil

n°257397
tanguy
Posté le 29-11-2002 à 20:57:02  profilanswer
 

MrX a écrit a écrit :

j'ai encore dit une connerie comme d'hab... sans espoir... merci du conseil  



 
 
nan t'as fait comme la majorite des gens qui connaissent pas et donc qui subisent le mauvais design du C et donc du C++  
pour programmer proprement en C et en C++ il faut le vouloir, en Java par exemple c'est deja beaucoup plus facile
 
tout le monde a ete comme toi au depart et beaucoup le sont encore avec plusieurs annees d'experience parcequ'ils ne sont pas aware :)  
le pire c'est de voir qu'il y a de nombreux projects qui sont actuellement developpes en C++ avec des char *  
 
pourtant le nombre de bugs qui pourraient etre supprime en remplacant les char* par des string...


Message édité par tanguy le 29-11-2002 à 20:58:51
n°257403
Mara's dad
Yes I can !
Posté le 29-11-2002 à 21:06:20  profilanswer
 

En fait le problème vient du fait que le message est dans la rubrique "cobol" !
 
OK, je sors . . .


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°257834
MrX
Posté le 30-11-2002 à 17:02:21  profilanswer
 

lol j'ai encore fait mon sujet a le vas vite alors j'ai pas fait gaffe et pis vala... au fait cobol c koi ??

n°257850
bjone
Insert booze to continue
Posté le 30-11-2002 à 17:56:05  profilanswer
 

un truc laid..... (très difficile d'imaginer plus laid, même l'assembleur est plus naturel)

n°257851
bjone
Insert booze to continue
Posté le 30-11-2002 à 17:56:40  profilanswer
 

oui je sais j'avais envie de troller (quoique....)

n°257946
MrX
Posté le 30-11-2002 à 21:50:24  profilanswer
 

[:sterezis]  ca c un troll  :D

n°275260
*syl*
--&gt; []
Posté le 23-12-2002 à 19:38:35  profilanswer
 

Qu'est-ce qu'il fout dans Cobol ce topic !?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C, C++] faire un array dynamique de strings...

 

Sujets relatifs
[JS] Comment fabriquer une variable dynamique?[C++] tableau de double de taille dynamique
Menu Dynamique DHTML / Javascript avec images[PHP // MySQL] Récup du résultat d'une requete sous forme d'array
[SQL/SQL Server] Croisé dynamiqueFaire un MYSQL_FETCH_ARRAY... [ - Job's Done - ]
Comment declarer un tableau array a 2 dimensionTABLEAU DYNAMIQUE
Création dynamique d'un TStringGrid[GAWK] Affectation d'une variable dynamique
Plus de sujets relatifs à : [C, C++] faire un array dynamique de strings...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR