View Full Version : C++ ed array: come posso....
Sallustius
12-02-2003, 21:11
... definire le dimensioni di un array "dinamicamente"? Mi spiego :) ... Il programmino che sto progettando deve "leggere" un testo immesso dall'utente, e criptarlo. Il problema è che non posso sapere in anticipo quanto il testo sia lungo, pertanto non posso dichiarare le dimensioni dell'array in anticipo. :mc: Siccome nn sono pratico di programmazione windows (mentre il prog deve girare su quella piattaforma) potreste consigliarmi una funzione che stabilisca "dinamicamente" le dimensioni dell' array, in base alla lunghezza del testo immesso? Mi fareste un grande favore....
Grazie! :p
Usa la string della libreria standard: si ridimensiona automaticamente.
Sallustius
12-02-2003, 21:51
Quindi dovrei includere <string.h> e poi utilizzare la funzione -strlen-? Ho capito bene?
Si..preleva la stringa con la Gets(), una volta letta hai la dimensione con la strlen!!
Dovrebbe funzionare :p
/\/\@®¢Ø
13-02-2003, 08:55
devi leggere una parola alla volta o tutto il testo ?
Puoi usare indifferentemente una string o un vector<char> .Il secondo e' piu' efficiente se leggi un carattere alla volta, ma non sempre e' necessario:
per leggere una riga alla volta:
#include <string> // SENZA .h !
#include <iostream>
...
using namespace std;
string s;
getline( in , s );
dove in e' lo stream di input (cin ad esempio)
se invece vuoi leggere un intero file puoi va bene cosi'
#include <string>
#include <iostream>
...
string s;
char c;
while( in.get(c) )
s += c;
Il numero di caratteri letti (sia con string che con vector<char> ) la ottieni con
s.size();
ciao
Marco
Quindi dovrei includere <string.h> e poi utilizzare la funzione -strlen-? Ho capito bene?
No.
Quell'header file e' relativo alla libreria C per la gestione delle stringhe. Queste funzioni si aspettano sempre un buffer preallocato.
Devi usare <string> che e' l'header file delle funzioni C++ per la gestione delle stringhe.
Si..preleva la stringa con la Gets(), una volta letta hai la dimensione con la strlen!!
La gets si aspetta un buffer preallocato quindi non va' bene.
Un esempio di lettura di stringhe dal prompt usando la string e':
string input_line;
cin >> input_line;
Provalo.
Sallustius
13-02-2003, 13:17
Grazie mille ragazzi! ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.