Injetando string em 'cin'

Eu tenho uma função que lê a entrada do usuário de std :: cin e quero escrever um unittest que insira algumas strings em std :: cin, de modo que a extração posterior de std :: cin leia essa string em vez de fazer uma pausa para entrada do teclado .

Idealmente, eu alteraria a assinatura da função para poder transmitir um istream personalizado como parâmetros, mas não posso fazer isso aqui, pois tenho uma interface fixa que não posso alterar.

cin.putback () équase o que eu queria, no entanto, ele está inserindo apenas um caractere de cada vez, e está inserindo-os em ordem inversa (mas li em algum lugar que colocar de volta char que não estava originalmente lá pode ser perigoso, embora o site não explique por que ) Eu tentei vários métodos para injetar a string no buffer interno cin. cinbrd () do cin, mas nenhum funcionaria. Também considerei usar um script de teste externo ou criar subprocessos, no entanto, gostaria de considerar primeiro um teste em C ++ puro.

Então, existe algum método para colocar seqüências de caracteres em cin? Ou você conhece uma maneira melhor de injetar minha "entrada de teclado falsa"?

questionAnswers(3)

yourAnswerToTheQuestion