Взять контроль над cin в main()
Есть ли способ взять под контроль Cin, чтобы я мог проверить эту функцию?
void foo() {
int n;
cin >> n;
}
Я хотел бы сделать
int main()
{
// take control of cin and use a stringstream instead
stringstream ss;
1 >> ss;
s >> foo(); // will for sure not work?
}
Примечание: для полноты здесь приведен окончательный код:
struct membuf : std::streambuf
{
membuf(char* begin, char* end) {
this->setg(begin, begin, end);
}
};
int main()
{
char buffer[] = "3\0";
membuf sbuf(buffer, buffer + sizeof(buffer));
std::istream in(&sbuf);
foo(in);
}
void foo(std::istream& iss = std::cin)
{
int n; // number of students
iss >> n;
}
1 ответ
Решение
Вот код для принятия потока в качестве параметра и по умолчанию cin
:
void foo(std::istream& iss = std::cin) {
int n;
iss >> n;
}
Теперь, будет ли это предпочтительнее, чем выполнение, например, трубопроводов, во многом зависит от среды, в которой будут использоваться функции, и поэтому требует большего знания вашего конкретного случая.