问题标签 [stream-operators]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4481 浏览

c++ - 为我的班级重载流运算符 << >> 的正确方法是什么?

我对如何在 C++ 中为我的类重载流运算符有点困惑,因为它们似乎是流类上的函数,而不是我的类上的函数。这样做的正常方法是什么?目前,对于“get from”运算符,我有一个定义

哪个有效。Thing 类的定义中没有提到它。我希望它能够在其实现中访问我的 Thing 类的成员 - 我该怎么做?

0 投票
2 回答
1615 浏览

c++ - QDataStream & QDataStream::operator>> ( char *& s ) 的问题

此代码不起作用。结果的 QByte 是空的。如果我使用 char* 也是一样。奇怪的是,相同的代码可以在另一个程序中工作。我想找出两者之间的区别。如果我使用 int、uint、quint8 等,这将有效

0 投票
4 回答
8614 浏览

c++ - 在 gdb 中调用 operator<<

你如何operator<<(std::ostream &os, const ClassX &x)从 gdb 内部调用?

换句话说,你如何在 gdb 中打印一个对象?

call std::cout<<x或者call operator<<(std::cout, x)似乎对我不起作用!

有任何想法吗?

0 投票
1 回答
288 浏览

c++ - ADL 无法为用户定义的类型找到具有适当限定符的流运算符

我正在使用 Visual Studio 2010 在 Microsoft Windows 7 上编译 x64 服务,使用类似以下的Boost 变体

我摆脱那个 string_t 并用 std::string 替换它的那一天就是我给我的老板和团队买甜甜圈的那一天。但这不是我们来这里的原因...

Boost 变体支持其包含类型的流运算符,前提是该类型具有重载。所以我有:

然而,我被错误信息所困扰:

T3 指的是 string_t。

生成错误的违规代码存在于以下上下文中。它很冗长,所以你,读者,有相关的上下文信息:

我尝试删除右手限定符和引用,认为按值传递副本会取消限定符(根据共享指针可能不那么出色),并且我尝试将声明从命名空间移动到全局范围,希望 ADL 会因为某种原因捡起它(从概念上讲,我得到了 ADL,但对我来说仍然只有一点点黑魔法)。

我不知道还能做什么。除了编译器无法找到具有 const 限定 rhs 的插入运算符之外,这个 bug 的本质是什么?怎么可能,当它就在那里的时候?决议是什么?

0 投票
4 回答
2936 浏览

c++ - 未找到 C++ 中重载的 << 运算符

这是困扰我的问题:我operator <<在头文件 FAPPDebug.h 中有一个重载,例如:

以及 FAPPDebug.cpp 中的实现:

以及相应的函数调用:

不管这看起来多么奇怪,它都可以在 Windows 下使用 MSVC2010 编译(并且可以工作!)

debug() 只是一个从当前位置创建 FAPPDebug 对象的宏。请注意 (debug() << "...") 周围的额外 () 集,但它不会产生我想要的。

在使用 g++ 4.4 的 Linux 下,我收到以下错误:

MessageBroker.cpp:91: 错误: 'QTextStream(stdout, QFlags((QIODevice::OpenModeFlag)3u)) << ((FAPPDebug*)((FAPPDebug*)FAPPDebug(417, ( (const char*)"MessageBroker.cpp"), ((const char*)(& PRETTY_FUNCTION )), (LogLevel)7u).FAPPDebug::operator<<(((const char*)"Module")))- >FAPPDebug::operator<<(((const QString&)((const QString*)(& ModuleBase::getModuleDescription()())))))->FAPPDebug::operator<<(((const char*)"由于未设置应用程序对象而退出。"))' /usr/local/Trolltech/Qt-4.8.2/include/QtCore/qtextstream.h:184:注意:候选人是:FAPPDebug.h:94:注意:QTextStream& 运算符<<(QTextStream&, FAPPDebug&)

(候选人很多,我只保留重要的)

我已将函数调用修改为:

我收到错误消息:

MessageBroker.cpp:在成员函数'bool MessageBroker::init(Application*, const QString&)'中:MessageBroker.cpp:91: 错误:没有匹配函数调用'operator<<(QTextStream, FAPPDebug&)' /usr/local /Trolltech/Qt-4.8.2/include/QtCore/qchar.h:396:注意:候选人是:QDataStream& operator<<(QDataStream&, const QChar&) /home/ferenc/work/trunk/Core/Common/FAPPDebug.h :94: 注意:
QTextStream& 运算符<<(QTextStream&, FAPPDebug&)

所以你可以看到每次都能找到正确的函数(是的,FAPPDebug.h 头文件包含在 MessageBroker.cpp 中),但“更符合标准”的编译器未能使用它。我觉得这是我对某处标准的理解中的一个小故障,所以我请求您帮助找到它。

编辑:操作员被声明为朋友class FAPPDebug

EDIT2: debug() 是一个宏,定义如下:

IE。它只是创建了一个 FAPPDebug 对象,其参数指示当前位置。

谢谢!F。

0 投票
4 回答
1852 浏览

c++ - 使用模板类的嵌套类型作为模板参数

我想使用模板类的嵌套类型来实现模板函数。

我刚刚在这里读到,最好实现operator <<为非会员和非朋友功能。因此,我决定将功能toStream()tableToStream()外部移动MyClass

MyClass::toStream()转换operator <<为非会员和非朋友功能很容易:

但我想单独使用operator <<而不是调用MyClass::tableToStream()

对于该函数MyClass::tableToStream(),我可以使用以下实现,但这可能会使流输出混乱,因为该函数太通用(任何类型都可以TABLE)。

因此,我想限制MyClass. 以下是我尝试转换MyClass::tableToStream()为标准operator <<非会员和非朋友功能的尝试之一:

但错误大约是typename MyClass<T>::TABLE.

0 投票
2 回答
1728 浏览

c++ - 嵌套命名空间中的流运算符重载

最近,当我实现一个类时,我创建了一个名为操作符的嵌套命名空间,我在其中添加了流操作符。

我这样做是因为我经常需要在类的命名空间操作系统以外的命名空间中使用它们

就在我想要的地方,就是这样。

在这里,我有一个示例,其中包含类 Point、类 Segment 及其流运算符,其中 Segment 的流调用 Point 的流。但是......我无法编译:

上课点:

类段:

主要的:

这无法编译,我得到:

如果我删除命名空间运算符编译正确,但正如我告诉你的那样,我想避免它。

我认为问题与在另一个命名空间运算符中使用命名空间运算符进行调用有关。

有任何想法吗?

0 投票
2 回答
215 浏览

c++ - (错误)“std::cout >> namesArray(counter)(0)”中的“operator>>”不匹配

我真的很困惑为什么我会收到这个特定数组索引的错误。我正在编写一个从文本文件中获取学生成绩输入的程序。此文件为 10 行,每列 2 列,格式为(名字、姓氏、1 级、2 级、3 级、4 级、5 级)。在执行期间,我需要逐行遍历文件并将名称放入他们自己的 10 行 2 列中,并将成绩放入他们自己的 10 行 5 列中。这是一个阶级的事情,我知道我们为什么要这样做。基本上,数据将在循环期间拆分并加载到 namesArray 和 GradesArray 中。我已在我的 IDE 中标识的错误行在两侧和行位置处用*标记

最后,这是我的代码:

0 投票
2 回答
236 浏览

c++ - 如何在类中实现提取运算符?

我有一个类,可以将二进制文件的一部分读入不同类型的变量中。

现在我想实现这个答案中描述的流提取运算符。

代码无法编译并显示此错误消息:error C2804: binary 'operator >>' has too many parameters。如何正确覆盖流提取运算符?它应该区分类型并且可以链接。

0 投票
1 回答
60 浏览

ios - 是否有 IOS 的输出流类可以用来打印 QT 中的 qDebug 等类数据?

在 QT 中,许多类都有流 << 运算符来打印有关类成员的有用信息。例如,我可以像这样打印 QImage 或 QRect 大小:

输出:图像:QImage(QSize(500, 100) )

输出:矩形:QRect(3,4 100x50)

我发现这非常有用,因为您不必输入每个班级成员来打印它。

我是IOS编码的新手。对于像 CGRect 这样的基本类,有什么简单的方法可以实现我所缺少的吗?