Можно ли изменить источник ввод cin
#include <bits/stdc++.h>
using namespace std;
int fn() {
int n;
cin >> n
return 0;
}
Можно ли как-то подать в поток ввода данные для записи в переменную n не с клавиатуры, и ничего не изменять в fn? Может можно как-то записать данные в буфер, чтобы потом с помощью cin их считать? Хочу сделать программу для тестирования произвольных функций.
Ответы (1 шт):
Автор решения: AR Hovsepyan
→ Ссылка
Если я правильно понял, вы хотите изменить буфер std::cin. Да, но только не забывать потом вернуть старый.
std::ifstream in("some_file");
//установим новый буфер, очистим буфер и вернем старый
std::streambuf* buf = cin.rdbuf(in.rdbuf());
//теперь cin читает из буфера файлового потока
fn();
//установим старый
cin.rdbuf(buf);