PDA

View Full Version : array di stringhe in C++ . Aiuto !!!!


leon84
26-04-2003, 20:00
Allora sembrerà strano ma sapete che da tanto che uso C++ non mi sono mai imbattutto in una rray di stringhe ? Allora il punto è : come si dichiara un array di stringhe ?

Ho fatto così : char vettore[20][200] ; cioè la prima dimensione è riferita alla stringa e la seconda al vettore ..... proprio come se fosse una matrice ...... il punto è il seguente .....se io volessi leggere una stringa con cin.getline() o cin.get come faccio ? Sarebbe più opportuno che mi crei un tipo ? e poi mi creo una rray di quel tipo ? Fatemi sapere .... ah ma in c++ il tipo string esiste o si deve per forza creare con char[dimensione] ?

misterx
26-04-2003, 20:05
guarda qui

http://programmazione.html.it/cplusplus/cplusplus_22.htm

leon84
26-04-2003, 20:10
Si visto .... ma il mio problema è su un array di stringhe .... forse non mi sono spiegato ... ora ci riprovo .... a me serve definire un array i cui elementi sono delle stringhe ..... lo so che una stringa non è altro che un array di carattere .... capito ? Secondo te è meglio definire un tipo a parte ?

Kleidemos
26-04-2003, 20:22
Originally posted by "leon84"

Si visto .... ma il mio problema è su un array di stringhe .... forse non mi sono spiegato ... ora ci riprovo .... a me serve definire un array i cui elementi sono delle stringhe ..... lo so che una stringa non è altro che un array di carattere .... capito ? Secondo te è meglio definire un tipo a parte ?

usare vector<string> della libreria standard?

leon84
26-04-2003, 20:36
Originally posted by "Kleidemos"



usare vector<string> della libreria standard?

sarebbe ?

Kleidemos
26-04-2003, 20:41
Originally posted by "leon84"



sarebbe ?


Vector è il nuovo tipo di array del C++ Standard(ex STL).
Se vuoi ti mando una mia lib che è in quasi tutto uguale ai vector cosi capisci come funzionano.

Per piu info guarda qui! (http://www.sgi.com/tech/stl/Vector.html)

leon84
26-04-2003, 21:11
si ok il mio indirizzo è gigginofalco@virgilio.it

leon84
26-04-2003, 21:41
Cmq ho risolto nel seguente modo :


#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
char nomi[20][15];
void registra ( char vettore[20][15],int &n);
void main ()
{
char tasto ;
int numero_di_nomi ;
registra (nomi,numero_di_nomi);
int i;
for (i=0;i<numero_di_nomi;i++)
cout << nomi[i] << endl ;
cin >> tasto ;
}

void registra (char vettore[20][15],int &n)
{
cout << "Quanti nomi vuoi inserire ? " << endl ;
cin >> n;
int i ;
for (i=0;i<n;i++)
{
cout << "Inserire " << i+1 << " nome" ;
cin.ignore();
cin.get (vettore[i],20,'\n') ;
}
}



A questo punto posso dire che a volte C++ è davvero stupido se permettete ..... infatti guardate come ho passato alla funzione registra il vettore ..... ho dovuto specificare entrambe le dimensioni (stringa e dim. array) ..... mi sembra ovvio per la prima dimensione ma inutile per la seconda .... eppurre se elimino la seconda dimensione mi dà errore .... invece con un array di interi o reali la dimensione non la metto mai e funziona sempre ..... boh davvero strano

cionci
27-04-2003, 10:32
Passalo così:

char **vettore

leon84
27-04-2003, 10:37
sarebbe ?

Kleidemos
27-04-2003, 10:42
Originally posted by "leon84"

sarebbe ?

puntatore a puntatore al tipo char, se nn sbaglio

misterx
27-04-2003, 10:50
ehi, però in BCB esiste la TStringList che è molto comoda :)


TStringList *miastringa = new TStringList;

Kleidemos
27-04-2003, 10:52
Originally posted by "misterx"

ehi, però in BCB esiste la TStringList che è molto comoda :)


TStringList *miastringa = new TStringList;

interessante..........
Mi fai un esempio di utilizzo?
Ma tu usi l'help in lienea per trovare ste cose??

P.S: ma AnsiString di BCB..............puo essere castata in string STL?

leon84
27-04-2003, 10:53
A volte sapete che penso ? Dicono tutti che C++ è molto potente e su questo non ho dubbi ma permettete una cosa ? Il compilatore C++ è il più cretino sulla faccia della terra ... forse sarà solo quello della microsoft ma a volte da errori veramente stupidi ...... è una cosa incredibile ..... e poi un linguaggio tanto potente che non ha neanche un tipo stringa ? E' esagerato dai ...... così anche la famosa clearscreen nota in tutti i linguaggi di programmazione per farla in c++ ci sono volute chiamate ad API .... una cosa incredibile ..... e di questo chiaramente ringranzio il carissimo cionci .....

Kleidemos
27-04-2003, 10:57
[quote="leon84"] è una cosa incredibile ..... e poi un linguaggio tanto potente che non ha neanche un tipo stringa ?quote]

Includi <string> nei tuoi prog e potrai usare le string come ti dicevo post è sopra

leon84
27-04-2003, 11:00
si ma io nei miei programmi includo sempre string.h ma nella dichiarazione della stringa intendo non c'è un tipo ben definito .... mi spiego se io volessi fare una rray di stringhe in qualsiasi altro linguaggio farei così :



string vettore[10] ; è solo un esempio chiaramente cambia di linguaggio in linguaggio ..... in c++ devo fare char vettore[20][10] che in realtà è una matrice bidimensionale ..... capito cosa intendevo dire ?

misterx
27-04-2003, 11:00
Originally posted by "Kleidemos"



interessante..........
Mi fai un esempio di utilizzo?
Ma tu usi l'help in lienea per trovare ste cose??

P.S: ma AnsiString di BCB..............puo essere castata in string STL?


TStringList *miastringa = new TStringList;

miastinga->Add("ho aggiunto una stringa");
miastinga->Add("ho aggiunto una stringa");
miastinga->Add("ho aggiunto una stringa");
miastinga->Add("ho aggiunto una stringa");
miastinga->Add("ho aggiunto una stringa");

tieni presente che l'allocazione avviene attraverso la VCL , sembra quasi Visual Basic ;)

int numero stringhe = miastringa->Count();

tieni presente che BCB ha già di suo talmente tante di quelle classi a sua disposizione che definirne delle nuove è quasi superfluo ;)

a me non è mai capitato di definirne alcuna sino ad ora :)

etc.....