Инъекция строки в 'cin'

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

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

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

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

Ответы на вопрос(3)

Ваш ответ на вопрос