在main()中控制cin

时间:2016-07-18 11:40:05

标签: c++ istream

有没有办法控制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 个答案:

答案 0 :(得分:1)

以下是将流作为参数并默认为cin的代码:

void foo(std::istream& iss = std::cin) {
    int n;
    iss >> n;
}

现在是否优先选择例如管道很大程度上取决于将要使用的功能环境,因此需要更多地了解您的具体情况。