我开始使用Poco C ++库,尤其是HTTP客户端/服务器解析。我看到有HTTPRequest,HTTPResponse等类,这些类有一个名为“read(std :: istream)”的方法。此方法接受类型为“std :: istream”的输入参数。但是,我希望将其用于从命令行输入的内容。我使用cin来获取输入,但这会产生错误,因为istream和cin是不同类型的。下面是一个例子:
int main() {
HTTPRequest* req = new HTTPRequest();
std::string input;
std::cout << "Enter something.. " << std::endl;
std::cin >> input;
req->read(input);
}
我的理解是read方法会将数据解释为HTTPRequest类型。我这样做只是为了测试。我知道“字符串”类型不会工作,但我尝试使用istream构造函数与getline等,它仍然给出编译时错误。那么这样做的理想方法是什么?
答案 0 :(得分:1)
根据POCO的docs,HTTPRequest :: read方法采用std::istream
个对象。
void read(
std::istream & istr
);
如果要从标准输入读取请求,请将std :: cin作为参数传递。
int main() {
HTTPRequest* req = new HTTPRequest();
// std::string input;
// std::cout << "Enter something.. " << std::endl;
// std::cin >> input;
req->read(std::cin);
return 0;
}
当它试图从std::cin
读取时,它会提示您输入,因此您可以输入您尝试输入的内容到您在那里的字符串中。我建议您使用std::ifstream
对象或使用std::istringstream
。这两个都是std::istream
的子类,因此您可以将其作为参数传递。
例如:
int main() {
HTTPRequest* req = new HTTPRequest();
std::string input;
std::cout << "Enter something.. " << std::endl;
std::cin >> input;
std::istringstream iss(input);
req->read(iss);
return 0;
}