перенаправить cin и cout из / в строку в c ++ - PullRequest
0 голосов
/ 19 января 2012

У меня есть кусок исходного кода для консольного приложения, которое использует cin и cout для ввода и вывода.

Теперь я хочу интегрировать этот материал в свою собственную программу и делать вещи «автоматически», как при генерации / симуляции времени выполнения 'input' и захвата вывода в строку для дальнейшего преобразования.

По сути, для ввода я хочу сделать такие вещи, как

myCinReplacement->AddInput("Hello\n");
myCinReplacement->AddInput("This is some random input\n");

Изатем позже, если другая часть программы считывает данные из буфера ввода через cin, она должна получить введенный мною ввод (или подождать, пока что-то будет добавлено, как это происходит в реальном окне консоли).

Что-то похожее для вывода, если код

cout << "foo" << "bar"; 

должен добавить «foo» и «bar» к какой-то строке, к которой я могу получить доступ в другом месте.

Я довольно неопытен свесь бизнес streambuf (никогда не создавал консольных приложений в c ++), и пока что кажется, что мне нужно переопределить полный объект istream и ostream.Но я с трудом могу поверить, что нет более легкого решения этой проблемы?

...