Я пытаюсь получить строку в качестве ввода из командной строки. Моя проблема в том, что я не получаю целую строку, но она символизируется пространством.C++ cout cin string manipulation
Так что, если я вошел кое-что, например, «Я люблю математику много» вместо получения
"you enterend: I like Math a lot"
Я получаю происходит некорректно:
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;
И не забудьте версию cin.getline (char *, int), если вы хотите взять строку c. –
У него нет явного преобразования в void *. Он имеет явное преобразование в неуказанный тип, который можно использовать в булевом контексте. Это может быть недействительным * в вашей реализации, но это может не устоять во всех. И его намного легче объяснить новичкам, что результат конвертируется в нечто, что действует как логическое. –
На самом деле, 'operator void *' требуется по стандарту. Это часть интерфейса базового класса basic_ios. –