草庐IT

c++ - 有谁知道 endl(cout) 和 cout << endl 之间的区别?

我以为它们是同一回事,但是当我向在线法官发送代码时(使用endl(cout))它给了我“错误答案”的判决,然后我尝试发送另一个使用cout的代码法官接受了密码!有谁知道这些命令之间的区别? 最佳答案 据我所知没有。std::endl是一个接受流并返回流的函数:ostream&endl(ostream&os);当您将它应用于std::cout时,它只是立即应用该功能。另一方面,std::basic_ostream过载operator签名:templatebasic_ostream&operator&(*pf)(basic_ostrea

c++ - OpenCV 2.1:ostream operator<< cv::Mat 在哪里?

正在关注thisquestion,我试图将cv::Mat的内容打印到标准输出:#include#include#include#include#includeintmain(){cv::Matm=cv::Mat::ones(10,10,CV_32S);std::cout这会导致错误error:nomatchfor‘operator我在Ubuntu11.10上使用gcc4.6.1,并安装了opencv,不包括示例,遵循theseinstructions.我的问题是,运算符在2.1中可用吗?如果可用,我如何获得它? 最佳答案 更新到Op

c++ - 类没有成员 "operator<<"

我已通读Shouldoperator和OverloadingInsertionOperatorinC++,看起来像类似的问题,但没有解决我自己的问题。我的头文件:usingnamespacestd;classAnimal{private:friendostream&operator我的客户:usingnamespacestd;intAnimal::getnumber(){returnnumber;}ostream&Animal::operator实现很简单,但我收到错误:在cpp中-错误:类“Animal”类没有成员“operator我真的不明白,因为我已经将插入运算符声明为Anima

c++ - 写入 ostream 的常量引用

我正在阅读C++primer。我遇到了以下代码:#include#includeusingnamespacestd;classPrintString{public:PrintString(ostream&o=cout,charc=''):os(o),sep(c){}voidoperator()(conststring&s)const{os此代码有效,但我不知道为什么。以下是我的想法,如果有人能帮助指出我错在哪里,那就太好了......这里,'printer'是一个constPrintString对象,所以它的数据成员是const,所以'printer.os'是对cout的const引用

c++ - 如何在 C++ 中编写 ofstream vector ,它接收所有不同的输出流,如 cout、字符串流和 ofstream

我正在尝试实现一个记录器,它可以注册到多个流,如ostringstream、ofstream等。我试图实现这样的功能voidregister_stream(std::ostream&a);载体如下std::vectorstreams;寄存器流和运算符重载如下voidlogger::register_stream(std::ostream&a)`{streams.push_back(a);}templatevoidlogger::operator我正在尝试实现一个记录器,以在单个运算符“”调用上写入所有已注册的流。调用代码如下:std::ostringstreamos;std::ofst

c++ - 将字符串 vector 连接到 std::ostream(如 boost::join)

我有一个字符串vector,我想将它输出到流(实际上是文件流)。我想在vector元素之间有一个分隔符。有一种方法可以使用标准ostream_iteratorstd::vectorstrs;std::ostream_iteratorout_file_iterator(out_file,delim);std::copy(strs.begin(),strs.end(),out_file_iterator);我不喜欢这种方式,因为each元素后有一个delim文本,但我不需要有一个delim在最后一个元素之后。我想使用类似boost::join的东西。但是boost::join返回字符串,而

c++ - ostream::write 实际写入了多少字节?

假设我向ostream::write发送了一个大缓冲区,但实际上只有它的开始部分成功写入,其余部分没有写入intmain(){std::vectorbuf(64*1000*1000,'a');//64mbytesofdatastd::ofstreamfile("out.txt");file.write(&buf[0],buf.size());//trytowrite64mbytesif(file.bad()){//butsupposeonly10megabytewereavailableondisk//howmanywereactuallywrittentofile???}return

c++ - 检查给定的 ostream 对象是否已写入

我可以查询ostream对象是否已写入吗?对于ostringstream,可以使用if(!myOssObject.str().empty())一般情况如何,例如ofstream或cout或cerr? 最佳答案 一般没有。您可以通过tellp()查看在刷新(发送缓冲数据)之前写入了多少字符(或其他内容):Returnstheoutputpositionindicatorofthecurrentassociatedstreambufobject.cout0){//Thereissomedatawritten}刷新后,这些输出流将忘记它们

c++ - std::ostream 需要功能方面的帮助

我需要有人逐部分向我解释这些代码行,我需要一些帮助来使用简单示例的“ostream”。谢谢:)。inlinestd::ostream&operator更新1:当我使用此函数时,它无法编译并且错误提示:std::ostream&class::operator 最佳答案 这些行只是将处理Telegram对象的能力添加到标准输出流类。当你添加一个新类并且你想要像cout这样的输出流时要智能地处理它们,您需要添加一个新的将新对象类型作为第二个参数的运算符方法。上面的代码就是这么做的。当您稍后执行语句时:Telegramtg("Bob","H

C++ 重载 << 错误

我希望得到一些帮助来解决我遇到的错误-我已经搜索过类似的问题,但这些问题并没有真正给我我想要的东西。下面列出了代码片段:classNewSelectionDlg:publicCDialog{//Constructionpublic:classCProductListBox{public:friendostream&operator我有一个包含多个字符串的列表框-这些字符串可能因所选的其他下拉框而异。我想将此框中的内容添加到文件中,以及用户从填充它的下拉列表中选择的内容。但是我收到以下错误(我在VS2008中开发)。errorC2804:binary'operatorhastoomany