Converti stringa in nome variabile o tipo variabile

È ansible convertire stringhe in variabili (e viceversa) facendo qualcosa del tipo:

makeVariable("int", "count"); 

o

 string fruit; cin >> fruit; // user inputs "apple" makeVariable(fruit, "a green round object"); 

e quindi essere in grado di accedervi semplicemente facendo qualcosa come:

 cout << apple; //a green round object 

Grazie in anticipo!

No, non è ansible. Questo tipo di funzionalità è comune nei linguaggi di scripting come Ruby e Python, ma C ++ funziona in modo molto diverso da quelli. In C ++ cerchiamo di fare tutto il lavoro ansible del programma al momento della compilazione . A volte possiamo fare cose in fase di esecuzione , e anche allora i bravi programmatori C ++ troveranno un modo per fare il lavoro fin dal momento della compilazione.

Se sai che stai per creare una variabile, creala subito:

 int count; 

Quello che potresti non sapere in anticipo è il valore della variabile, quindi puoi rimandarlo per il runtime:

 std::cin >> count; 

Se sai che avrai bisogno di una collezione di variabili ma non esattamente quanti di loro poi creeranno una mappa o un vettore :

 std::vector counts; 

Ricorda che il nome di una variabile non è altro che un nome: un modo per fare riferimento alla variabile in un secondo momento. In C ++ non è ansible utile posticipare l’assegnazione del nome della variabile in fase di esecuzione. Tutto ciò che farebbe è rendere il tuo codice più complicato e il tuo programma più lento.

Puoi usare una mappa.

 map numbers; numbers["count"] = 6; cout < < numbers["count"]; 

Potresti voler guardare la mappa del C ++ .

I programmatori principianti fanno questa domanda per ogni lingua. Ci sono un gruppo di linguaggi informatici per i quali la risposta a questa domanda è “sì”. Questi sono linguaggi interattivi dinamici, come BASIC, Lisp, Ruby, Python. Ma pensaci: i nomi delle variabili esistono solo nel codice, per la comodità del programmatore. Ha senso solo definire una nuova variabile mentre il programma viene eseguito se c’è una persona per poi successivamente digitare il nome della variabile nel nuovo codice. Questo è vero per l’ambiente del linguaggio interattivo, e non è vero per i linguaggi compilati come C ++ o Java. In C ++, al momento dell’esecuzione del programma, e la nuova variabile immaginaria verrà creata, non c’è nessuno attorno a digitare il codice che userebbe quella nuova variabile.

Quello che vuoi veramente è invece la possibilità di associare un nome a un object in fase di runtime, in modo che il codice, non le persone, possa usare quel nome per trovare l’object. Come altre persone hanno già sottolineato, la caratteristica della map della libreria standard del C ++ ti dà quell’abilità.

No. Il C ++ è tipizzato staticamente, e questo va contro l’intero paradigma.

Ho visto questo tipo di funzionalità implementata prima memorizzando le variabili in una mappa stl.

Almeno per il (vice versa) c’è una possibilità con l’istruzione del preprocessore stringificare # . Vedi questa risposta su come convertire un nome di variabile C ++ in una stringa.

beh suppongo che tu non possa creare variabili dinamiche ma puoi usare una qualche funzione per scrivere una nuova variabile e il suo valore in qualsiasi file di testo esterno e accedere al suo valore da quel file dove è necessario (puoi anche rimuovere la variabile dynamic rimuovendola dal file di testo.)

teoria: le variabili sono luoghi in memoria in cui memorizziamo i dati, identificati da un nome, possiamo memorizzare i dati in un file di testo se il processore non ci consente di memorizzarli nei registri e possiamo accedere al suo valore ricercandone l’id quadro (nome della variabile ) int il file di testo, i nostri dati saranno accanto ad esso.

è solo un’idea, dovrebbe funzionare ma immagino che non sarà molto semplice e il tuo programma dovrà pagare in termini di velocità.