首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串流问题

串流问题
EN

Stack Overflow用户
提问于 2010-06-24 13:05:32
回答 7查看 1.6K关注 0票数 0

我无法编译以下的字符串流

代码语言:javascript
复制
stringstream qss;

qss.operator <<  "some text " ::stringstream.operator << DDateTime::date2Oracle(dFrom) ::stringstream.operator <<  " more text " ::stringstream.operator <<  DDateTime::date2Oracle(dUntil);

如果我只使用没有<<::stringstream.operator操作符--它抱怨操作符很矛盾,现在它抱怨语法不正确.

代码语言:javascript
复制
error C2143: syntax error : missing ';' before 'std::stringstream'

编辑:

error C2593:'operator <<‘是不明确的c:\Program \Microsoft .NET 2003\Vc7\include\ostream(434):可以是“std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits>::_Mysb *)”,_Traits=std::char_traits

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-06-24 13:16:51

显然,无论DDateTime::date2Oracle(dFrom)返回什么类型,都不会实现<<操作符。所以你得自己写一个。

至于语法,首先您必须调用它,就像它实际上是一个函数:

代码语言:javascript
复制
stringstream qss;
operator<<(
     (operator<<(qss <<  "some text ", 
                 DDateTime::date2Oracle(dFrom)) << " more text "),
      DDateTime::date2Oracle(dUntil));

其次,stringstream是在std命名空间中定义的,所以您必须像std::stringstream::std::stringstream那样编写它。::stringstream将在全局命名空间中查找它,并且那里没有定义这样的类。

顺便说一句,operator<<通常是作为空闲函数实现的,所以qss.operator<<不能工作。

票数 2
EN

Stack Overflow用户

发布于 2010-06-24 13:16:25

operator关键字不属于这里,请忽略它们:

代码语言:javascript
复制
qss << "some text" << DDateTime::date2Oracle(dFrom) << " more text " <<  DDateTime::date2Oracle(dUntil);

除非date2Oracle函数被含糊地重载,否则这应该是完全有效和明确的。

为类型operator<<实现T的正确模式是:

代码语言:javascript
复制
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
}
票数 3
EN

Stack Overflow用户

发布于 2010-06-24 13:10:47

你需要像函数一样调用操作符。

代码语言:javascript
复制
std::stringstream s;

operator<<(s, "Your string")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3110160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档