Inyectando cadena a 'cin'

Tengo una función que lee la entrada del usuario de std :: cin, y quiero escribir una prueba de unidad que inserte algunas cadenas en std :: cin, de modo que la extracción posterior de std :: cin lea esa cadena en lugar de pausar la entrada del teclado .

Idealmente, cambiaría la firma de la función para poder pasar un istream personalizado como parámetros, pero no puedo hacerlo aquí ya que tengo una interfaz fija que no puedo cambiar.

cin.putback () escasi lo que quería, sin embargo, está insertando solo un carácter a la vez, y los está insertando en orden inverso (pero leí en alguna parte que volver a poner caracteres que originalmente no estaban allí puede ser peligroso, aunque el sitio web no explica por qué ) He intentado varios métodos para inyectar la cadena en el búfer interno de cin cin.rdbuf (), pero ninguno funcionaría tampoco. También he considerado usar un script de prueba externo o crear un subproceso, sin embargo, me gustaría considerar primero una prueba en C ++ puro.

Entonces, ¿hay algún método para poner cadenas en cin? ¿O conoces una mejor manera de inyectar mi "entrada falsa de teclado"?

Respuestas a la pregunta(3)

Su respuesta a la pregunta