Domanda

Sto cercando di ottenere una linea in ingresso dalla linea di comando. Il mio problema è che non sto ottenendo tutta la linea, ma è in fase di token da uno spazio.

Quindi, se sono entrato qualcosa come "Mi piace molto la matematica" invece di ottenere

"you enterend: I like Math a lot"

Ho l'follwoing:

EDITING MODE: Enter a command
i like Math a lot
you entered i

EDITING MODE: Enter a command
you entered like

EDITING MODE: Enter a command
you entered Math

EDITING MODE: Enter a command
you entered a

EDITING MODE: Enter a command
you entered lot


void enterEditingMode(){
    editingMode = TRUE;
    static string CMD = "\nEDITING MODE: Enter a command\n";
    string input;
    while(editingMode == TRUE){
        cout << CMD;
        cin >> input;
        //we assume input is always correct
        // here we need to parse the instruction
        cout << "you entered " << input <<endl;
È stato utile?

Soluzione

std::getline è il modo standard per leggere una linea di ingresso per volta.

Si può usare in questo modo:

std::getline(std::cin, string);

Si ritorna un riferimento al flusso di input che ha una conversione implicita per void* in modo da poter verificare la presenza di successo facile in questo modo:

if (std::getline(std::cin, string))
{
    // successfully read a line...
}

Altri suggerimenti

cin.getline(input);

http://www.cplusplus.com/reference/iostream/istream / getline / per maggiori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top