在 main() 中控制 cin
take control of cin in 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[=12=]";
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;
}
这里是把流作为参数默认为cin
的代码:
void foo(std::istream& iss = std::cin) {
int n;
iss >> n;
}
现在这是否比做例如管道在很大程度上取决于功能将要使用的环境,因此需要对您的具体情况有更多了解。
有没有办法控制 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[=12=]";
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;
}
这里是把流作为参数默认为cin
的代码:
void foo(std::istream& iss = std::cin) {
int n;
iss >> n;
}
现在这是否比做例如管道在很大程度上取决于功能将要使用的环境,因此需要对您的具体情况有更多了解。