Domanda idiota su C++ char*

wedge
ho una piccola lacuna
voglio che l'utente inserisca una stringa di cui non conosco la lunghezza

char *stringa;
std::cin >> *stringa;

restituisce un bel segmentation fault
dove sbaglio?

Risposte
wedge
troncata la testa al toro utilizzando la classe string
ma mi resta la curiosità.

vl4dster
dichiarato cosi' stringa e' un puntatore a char, andrebbe prima allocata la memoria per poterci
memorizzare una stringa... e poi "*stringa" e' il _contenuto_ del puntatore, "stringa" e' l'indirizzo a cui punta.

david_e1
La sintassi non e' quella giusta. Ecco come si puo' fare in alternativa:

#include<iostream>

using namespace std;

int main(){
    char * string;
    string=new char[50];
    cout << endl;
    cin >> string;
    for(int i=0;i<50;++i) {
        cout << string[i];
    }
    cout << endl;
}


Comunque e' molto meglio orientarsi sulle stringhe se si vuole fare del C++.

superpunk733
Esatto, david_e :-)

prima si dichiara il puntatore a stringa, poi si alloca la memoria con "new". Anche io preferirei l'uso di "string" perche e' piu pratico eccetera, ma credo che didatticamente imparare i char sia utile :-)

david_e1
"superpunk733":
Esatto, david_e :-)

prima si dichiara il puntatore a stringa, poi si alloca la memoria con "new". Anche io preferirei l'uso di "string" perche e' piu pratico eccetera, ma credo che didatticamente imparare i char sia utile :-)

Quoto, ma il char * comunque non lo userei col cin per una questione di stile... o si fa C++ o C... :-D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.