C++ 串流问题
我无法编译以下StringStreamC++ 串流问题,c++,stringstream,C++,Stringstream,我无法编译以下StringStream stringstream qss; qss.operator << "some text " ::stringstream.operator << DDateTime::date2Oracle(dFrom) ::stringstream.operator << " more text " ::stringstream.operator << DDateTime::date2Oracle(dUntil)
stringstream qss;
qss.operator << "some text " ::stringstream.operator << DDateTime::date2Oracle(dFrom) ::stringstream.operator << " more text " ::stringstream.operator << DDateTime::date2Oracle(dUntil);
编辑:
错误C2593:“运算符您需要像调用函数一样调用运算符
std::stringstream s;
operator<<(s, "Your string")
std::strings;
运算符显式转换为/构造字符串:
qss << "some text " << string(DDateTime::date2Oracle(dFrom))
<< " more text " << string(DDateTime::date2Oracle(dUntil));
qss是什么阻止了你:
stringstream s;
s << "some text" << (DDateTime::date2Oracle(dFrom)) << "more text" << (DDateTime::date2Oracle(dUntil)) ;
strings;
s非常时髦:
qss.operator <<("some text ");
qss.operator <<(DDateTime::date2Oracle(dFrom));
qss.operator <<(" more text ");
qss.operator <<(DDateTime::date2Oracle(dUntil));
qss.operator该operator
关键字不属于此处,请将其删除:
qss << "some text" << DDateTime::date2Oracle(dFrom) << " more text " << DDateTime::date2Oracle(dUntil);
很明显,无论DDateTime::date2Oracle(dFrom)
返回什么类型的都不能实现qss,为什么这是被否决的?这是正确的语法。如果这不起作用,则对date2Oracle
函数的调用是不明确的,并且问题实际上与stringstreams或operator@Tony重要的一点是,我将DDateTime::date2Oracle
括在括号中。现在它不会被::
操作符所混淆。但是:
和()
比具有更高的先兆,这将产生与qss操作符explanation+1相同的效果,也可以尝试agsamek建议的方法。date2Oracle()返回std::string@Tony,然后再次检查错误消息stringstream
可以在开箱即用的情况下使用std::string
,问题出在其他地方。不,这是错误的方法。必须存在operatorNo的重载-需要转换为字符串,这很可能存在。如果你已经否决了我的答案,请考虑投票赞成,我没有否决。但在C++中,通过执行<代码>操作程序,您可以转换为String,您还可能需要为您的类型定义一个适当的运算符重载:<代码> STD::OFSUCTORATORATORATER,我们需要第二行,其中描述了DATESTECTURE。StrordDATECTIME::DATE2Oracle(日期日期):我敢打赌,它可以转换成std::string,也可以转换成其他东西。
qss << "some text" << DDateTime::date2Oracle(dFrom) << " more text " << DDateTime::date2Oracle(dUntil);
template<typename Char, typename Traits>
std::basic_ostream<Char, Traits>
operator<<(std::basic_ostream<Char, Traits>& stream, const T& object) {
// now put something into the stream
return stream; // return stream << xyz ... is also possible
}
stringstream qss;
operator<<(
(operator<<(qss << "some text ",
DDateTime::date2Oracle(dFrom)) << " more text "),
DDateTime::date2Oracle(dUntil));