Ввод строки в 'cin'

У меня есть функция, которая считывает ввод пользователя из std :: cin, и я хочу написать unittest, который вставляет некоторые строки в std :: cin, чтобы позднее извлечение из std :: cin будет читать эту строку вместо того, чтобы приостанавливать ввод с клавиатуры.

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

cin.putback () почти то, что я хотел, однако он вставляет только один символ за раз, и он вставляет их в обратном порядке (но я где-то читал, что возвращение char, которого изначально не было, может быть опасным, хотя на сайте не уточняется, почему). Я пробовал несколько методов для вставки строки во внутренний буфер cin.rdbuf (), но ни один из них тоже не работал. Я также рассматривал возможность использования внешнего сценария тестирования или создания подпроцесса, однако сначала я хотел бы рассмотреть тест на чистом C ++.

Итак, есть ли способ поместить строки в cin? Или вы знаете, как лучше ввести мой "поддельный ввод с клавиатуры"?

12
задан Lie Ryan 26 September 2010 в 09:52
поделиться