C ++ std :: stringstream, пробел в конце команды - PullRequest
0 голосов
/ 05 мая 2018
 void Parameters::parseCommand(std::string &input, std::vector<std::string> &params)
    {
      std::string par_str;
      std::stringstream in_str_strm(input);

      while (in_str_strm.good())
      {
        in_str_strm >> par_str;
        params.push_back(par_str);
      }
...
}

Мой код выглядит следующим образом, и у меня проблема в том, что, если пользователь вводит пробелы после этой команды, последний "par_str" будет push-back два раза.

Пример:

Входной сигнал: "привет 5 5"

Элементы в String-Vector: {"привет", "5", "5", "5"}

Как я могу предотвратить это?

1 Ответ

0 голосов
/ 05 мая 2018

Используйте in_str_strm >> par_str в качестве условия. Это позволяет проверить поток после ввода, чтобы params.push_back(par_str); не выполнялся при сбое ввода. Примечание: в отличие от good(), оно преобразуется в true, если EOF достигнут, но чтение успешно завершено, поэтому оно также работает, если в конце ввода нет места.

while (in_str_strm >> par_str)
{
    params.push_back(par_str);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...