У меня есть функция, которая читает пользовательский ввод из std :: cin, и я хочу написать unittest, который вставляет некоторые строки в std :: cin, так что последующее извлечение из std :: cin будет читать эту строку вместо приостановки для ввода с клавиатуры.
В идеале, я бы изменил сигнатуру функции, чтобы я мог передавать собственный istream в качестве параметров, но я не могу сделать это здесь, так как у меня есть фиксированный интерфейс, который я не могу изменить.
cin.putback () - это почти , что я и хотел, однако он вставляет только один символ за раз и вставляет их в обратном порядке (но я где-то читал, что возвращение символа, который изначально там может быть опасно, хотя сайт не уточняет, почему). Я пробовал несколько методов для вставки строки во внутренний буфер cin cin.rdbuf (), но ни один из них не сработал. Я также рассмотрел использование сценария внешнего тестирования или создания подпроцесса, однако сначала я хотел бы рассмотреть тест на чистом C ++.
Итак, есть ли способ поместить строки в cin? Или вы знаете лучший способ ввести мой «фальшивый ввод с клавиатуры»?