Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 串流问题_C++_Stringstream - Fatal编程技术网

C++ 串流问题

C++ 串流问题,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

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));