Newsgroup: it.comp.lang.c++
Titolo: console app: immettere stringa di lunghezza sconosciuta e con spazi

salve, sono al mio primo post qui e muovo i primi passi nel mondo
della programmazione (c/c++ e java). vorrei sapere come fare a creare
un codice c++ che mi permetta di memorizzare in una variabile stringhe
di lunghezza illimitata e contenenti spazi. mi spiego:
#include <iostream>
using namespace std;
main () {
	char* stringa = new char;
	cin >> stringa;
 
	cout << stringa << endl;
	return (0);
} 
in teoria mi consentirebbe di immettere stringhe di lunghezza
illimitata, ma dopo un tot di caratteri mi segna errore. in più non
posso utilizzare cin.getline() (poichè sto lavorando con lo heap) che
mi consentirebbe di usare gli spazi). di conseguenza due domande:
1) come faccio a creare un codice che mi consenta di ovviare ai
problemi soprastanti senza utilizzare Cstring;
2) nel caso non si possa fare altro che utilizzare Cstring vorrei
sapere quali siano gli headers da includere.
grazie mille.

 di lunghezza illimitata e contenenti spazi.
Mouvi qualche altro passo :-) ed usa std::string (con getline).
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it

 di lunghezza illimitata e contenenti spazi.
perché non provi ad utilizzare un oggetto string
#include <string>
che è molto conodo per fare quello che ti proponi
--
Ciao.
Maurizio
P.S.: eliminare _NO_SPAM per rispodere in privato

 sapere quali siano gli headers da includere.
Cos'e Cstring?? Mi vengono in mente tre alternative:
- la classe della libreria standard del C++, che si chiama std::string 
(tutto minuscolo)
- la classe di MFC, che si chiama CString (e fai meglio a non usarla 
finche' puoi restare su std::string)
- l'header <cstring>, che e' in pratica <string.h> del C (contiene le 
funzioni str*).
-- 
Andrea Bergia - studente
Linux Registred User #281550

 che è molto conodo per fare quello che ti proponi
grazie mille: ancora non conosco come utilizzare le funzioni presenti
in <string>, ma cercherò in rete e nei manuali che ho... in effetti
sono ancora agli inizi e devo fare molta strada, ma penso sia proprio
ponendosi i problemi e tentando di risolverli che si riesca a
progredire ;)

 in <string>, ma cercherò in rete e nei manuali che ho... in effetti
Ti faccio un esempio:
#include <string>
#include <iostream>
int main()
{
    std::string str1;
    std::string str2 = "La stringa inserita e': ";
    std::cout << "La lunghezza massima della stringa inseribile e': ";
    std::cout << str1.max_size() << " caratteri" << std::endl;
    std::cout << "Inserisci una stringa" << std::endl;
    std::getline(std::cin,str1);
    str2 += str1;
    std::cout << str2 << std::endl;
}
--
Gerolamo

siete stati tutt'e due utilissimi a chiarirmi le idee, grazie mille.

ecco, a me serviva in effetti una cosa semplicissima proprio come
questa proprio per risolvere il problema dell'inserimento di stringhe
con spazi e di una certa lunghezza.
#include <string>
#include <iostream>
using namespace std;
int main()
{
	string prova;
	getline(cin, prova);
	cout << prova << endl;
	return (0);
}
al che mi sorgono spontanee due domande: 
1) come mai dopo l'inserimento della stringa con la funzione getline()
bisogna premere invio un'altra volta? non si puo' ovviare a questo
inconveniente?
2) se io scrivessi la stringa digitata all'interno di un file di testo
potrei in teoria risolvere il problema della lunghezza della stringa?
3) in quest'ultimo caso, scrivere in un file del genere rallenterebbe
ed appesantirebbe in maniera eccessiva l'esecuzione del programma?
grazie mille.

 potrei in teoria risolvere il problema della lunghezza della stringa?
Non ho capito bene cosa intendi.


 ed appesantirebbe in maniera eccessiva l'esecuzione del programma?
Dipende.
In questi casi applicherei la massima:
"L'ottimizzazione prematura e` la radice di ogni male" (Donald Knuth).
:-)
--
Gerolamo