问题标签 [ostream]
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.
operator-overloading - 重载ostream
我有我的课,例如 TEST.h 中的 TEST 我有
朋友 ostream& operator<< (ostream& out, const test& outstr);
在 TEST.cc 中
ostream& 运算符 <<(ostream& out, test& strout) { out<< "TEST"; 退出;}
在主测试 x 中;cout<<x;
我收到错误消息:错误:未定义对 `operator<<(std::basic_ostream >&, test const&) 的引用
有什么问题?
c++ - 用于 std::vector 的 Typedef 和 ostream 运算符
我创建了一个类 Chromosome,它最终只是一个带有 ostream 运算符的向量包装器,所以我决定改为 typedef 向量。但是,我在使用模板化 ostream 运算符时遇到了问题……这是最好的方法吗?(我已经看到了一些方法,但都没有得到任何工作)
目前我得到的错误是:
干杯。
c++ - 重载 <<,返回 ostream 会出错。C++
我在重载 << 运算符时遇到问题。一切都可以打印并正常输入,但是当我尝试返回 ostream 时,出现此错误:
表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
我还已经在这个项目中重载了另一个 << 运算符,它返回了一个 ostream 就好了。以下代码中未使用此运算符。这是代码:
另一个头文件中的这段代码工作得很好:
在返回之前,一切都打印到屏幕上。这两个函数在我看来是一样的,有更多 C++ 经验的人可以告诉我吗?
c++ - C++重载<<错误
我希望得到一些帮助来解决我遇到的错误 - 我已经搜索了类似的问题,这些问题并没有真正给我我想要的东西。下面列出了一个代码片段:
我有一个包含许多字符串的列表框 - 这些可能因所选的其他下拉框而异。我想要这个框中的内容到文件以及用户从填充它的下拉列表中选择的内容。但是我收到以下错误(我正在 VS 2008 中开发)。
error C2804: binary
'operator <<'
has too many parameters
error C2333:'NewSelectionDlg::operator <<'
: 函数声明错误;跳过函数体
我不知道为什么我相信重载运算符的语法是可以的 - 任何人都可以看到我做的愚蠢或可能错过的任何事情 - 非常感谢任何帮助。
c++ - 如何使 C++ cout 不使用科学计数法
这是输出
Bas ana: 3284.78 儿子 faiz: 1784.78 儿子 ana: 5069.55
Bas ana: 7193.17 儿子 faiz: 3908.4 儿子 ana: 11101.6
Bas ana: 15752 儿子 faiz: 8558.8 儿子 ana: 24310.8
Bas ana: 34494.5 儿子 faiz: 18742.5 儿子 ana: 53237
Bas ana: 75537.8 儿子 faiz: 41043.3 儿子 ana: 116581
Bas ana: 165417 儿子 faiz: 89878.7 儿子 ana: 255295
姓名:362238 儿子 faiz:196821 儿子姓名:559059
Bas ana: 793246 Son faiz: 431009 Son ana: 1.22426e+006
Bas ana: 1.73709e+006 儿子 faiz: 943845 儿子 ana: 2.68094e+006
Bas ana: 3.80397e+006 Son faiz: 2.06688e+006 Son ana: 5.87085e+006
我希望数字显示为精确数字而不是科学数字。我怎样才能做到这一点?
c++ - C++ 模板/ostream 运算符问题
试图让操作员工作,但给我带来了一堆错误:
我的头文件
测试文件
错误:
C:\CodeBlocks\kool\praks3\vector.h|14|警告:友元声明 'std::ostream& operator<<(std::ostream&, const Vector&)' 声明一个非模板函数|
C:\CodeBlocks\kool\praks3\vector.h|14|注意:(如果这不是您想要的,请确保函数模板已经声明并在此处的函数名称后添加<>)|
obj\Debug\test.o||在函数'main'中:|
C:\CodeBlocks\kool\praks3\test.cpp|8|未定义引用 `operator<<(std::ostream&, Vector<(unsigned short)3> const&)'|
c++ - C++ ostream 输出操作
基本上它应该以这种格式列出所有矢量坐标:
(x, y, z)
但目前它确实像这样 (x, y, z, )
最简单的方法是在 for 循环中使用 if,但是我可以从 out 变量中减去一小段字符串吗?
我的代码:
c++ - 将 std::ostream 的子代传递给需要 std::ostream * 的库
我有一个派生自 std::ostream 的类(用于日志记录)。剥离下来,它看起来像这样:
我编写这个类是为了做一些我需要的特定事情,比如增量压缩。不幸的是,它不起作用。我需要将它传递给提供“set_out”函数以将其输出定向到 std::ostream 的第三方库(带有源代码,但相当大且混乱)。set_out 函数原型正是这样的:
如果我称之为:
或者
我得到了完全预期的行为。但是,如果我写:
我可以看到记录器的构造函数和析构函数按预期调用但从operator<<
未被调用。我不知道为什么,我希望这是一个简单的问题。如果我能解决这个问题,我就准备好了。
有谁知道到底发生了什么?问题似乎是库不知道我传递的是指向 absgs
而不是 a的指针std::ostream
,但是修复库以接受更广泛的对象,而不仅仅是std::ostream *
看起来可能涉及 500 多行代码,其中我想避免。
~~~~~~~~~~~~~~
编辑#1:我不确定它是否重要,但该库set_out() = 0;
在其类层次结构的顶部有一个虚函数,它在不同的子类中实现(相同,据我所知)。如果我正在编写库,我会创建set_out
一个(非虚拟)模板函数并提供 std::ostream 的专门化,但让用户提供他们喜欢的任何内容,只要他们定义一个可用的operator<<
. 对库进行此更改看起来将是整整半天的编辑。也许有更简单的方法?
c++ - 迁移 C++ 代码以使用标准头文件。现在得到:对“ostream”的引用模棱两可
我一直在迁移一些代码来更改标头的声明,因为它们不包含在我的 Ubuntu 环境中。我终于更改了所有文件,但收到以下错误:
代码如下:
任何人都知道我将如何纠正这个问题?
c++ - C ++将ostream作为参数传递
我正在为一个虚拟 rolodex 做一个家庭作业项目,它需要一个主类、一个 rolodex 类和一个卡片类。要将所有“卡片”的内容输出到控制台,分配说 main() 应该调用 rolodex 类中的 show(...) 函数,将其传递给 ostream 和 show(...) 然后迭代在卡片上,调用它们的每个 showCard() 函数。实际显示由卡片对象的 showCard() 函数完成,显示在提供的 ostream 上。
我不明白为什么 ostream 会/应该在任何地方传递。似乎任务要求这样的事情:
而不是这样的:
我是否误解了使用 ostream 作为参数,或者错过了一些其他明显的理由来像这样将 ostream 传递到流中?