C++ отформатировал вход: как 'пропустить' маркеры?

Учитывая их опыт, возможно, хороший фокус на C для встроенных систем, включая:

  • Инструменты статического анализа (например, PC-Lint )
  • МИСР-С .
  • Воздействие нескольких процессоров (например, PIC, STM32) и компиляторов
  • Как отлаживать.
  • Проблемы в реальном времени, включая прерывания, устранение неполадок, простое планирование / ОСРВ.
  • Разработка программного обеспечения.

И очень существенно: ПО для управления версиями . Я работаю в промышленности и использую это религиозно, но я поражен тем, что это никогда не упоминалось в моей степени!

20
задан Rafael Almeida 11 June 2009 в 20:28
поделиться

4 ответа

Доступна функция игнорирования :

std::cin << val1;
std::cin.ignore (9999, ' ');
std::cin << val3;

Первый аргумент определяет количество символов, которые нужно пропустить, второй параметр - это разделитель, на котором нужно прекратить пропуск.

Вы можете обернуть это в пользовательский манипулятор, поскольку он уродлив.


Вот пользовательский манипулятор:

template <class charT, class traits>
inline std::basic_istream<charT, traits> &
ignoreToken (std::basic_istream<charT, traits> &strm)
{
    strm.ignore (9999, ' ');
    return strm;
}

И вы можете использовать его так:

cin >> val1 >> ignoreToken >> val3 >> ignoreToken >> val5;

(ps - я не компилировал это, поэтому там возможно опечатка).

7
ответ дан 30 November 2019 в 00:59
поделиться

Вы можете сделать это намного проще с помощью getline (). Просто используйте его, чтобы захватить всю строку, а затем проанализировать значения между токенами (использовать strtok?)

С getline () существует множество других проблем, но это должно сработать для вашей проблемы.

2
ответ дан 30 November 2019 в 00:59
поделиться

Я бы просто прочитал это в фиктивную переменную. Если со временем он вам понадобится, он будет доступен.

1
ответ дан 30 November 2019 в 00:59
поделиться

Вы можете использовать

cin.ignore(256, ' ');

Это игнорирует все, вплоть до 256 символов или пробелов.

Редактировать (форматирование и ...): альтернативы, которые вы можете сделать:

int a, b;
cin >> a >> b >> b;
0
ответ дан 30 November 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: