C ++ manipolazione di stringa cout cin
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;
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