问题标签 [extraction-operator]
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.
c++ - 如何将提取运算符 (>>) 与向量一起使用?
在一个示例中vector<int> someVector
,istringstream someStringStream
您可以这样做:
我知道这vector<bool>
是一个有效的实现,并operator[]
返回一个引用对象。对于这段代码,我应该使用索引而不是迭代器,主要是为了可读性。目前,我正在使用这个:
有没有更直接的实现方式?
c++ - 为什么是非常量向量元素常量?
当我遍历 avector<bool>
时,我发现通过迭代器取消引用的元素被识别为就好像它们是 const 一样。这是为什么?更改容器或元素类型,例如list<bool>
or vector<short>
,并且元素是非常量的。这段代码显示了我在说什么:
对于vector<bool>
,此程序将“const”打印到控制台。将顶部的 typedef 和 manifest 常量更改为除了这两个组合之外的任何内容,它会打印“非常量”。此外,如果我将 , 行替换为iss >> *it
,T v; iss >> v; *it = v;
它会按预期工作——所有组合都会打印“非常量”。
我在 GCC 4.1.2 C++98(通过 codepad.org)和 VS2015 C++14+(?)中看到了相同的行为。
c++ - 如何强制运算符>>(C) 重载以匹配容器?
我想operator>>()
为任何“基本”类型和任何容器类型提供重载。这是我到目前为止所拥有的:
这可以按预期使用 GCC 编译和运行,但甚至无法在 VS2015 上编译。后者>>
将语句中的运算符iss >> vi;
与第一个基类型重载相匹配,这会触发其他编译错误。如何operator>>()
为非容器类型编写模板和容器类型模板(无需专门针对每种容器类型),用 GCC 和 VS2015 编译?
c++ - 强制字符串为 int 函数以消耗整个字符串
给定一个应该代表一个数字的字符串,我想把它放入一个转换函数中,如果整个字符串没有转换,它将提供通知。
对于输入"12"
::
istringstream::operator>>
输出 12atoi
输出 12stoi
输出 12
对于输入"1X"
,我想要一个失败响应,但我得到:
istringstream::operator>>
输出 1atoi
输出 1stoi
输出 1
对于输入"X2"
:
istringstream::operator>>
输出 0 并设置错误标志atoi
输出 0stoi
抛出错误
[现场示例]
有没有办法在 input 上引发错误行为"1X"
?
c++ - typedef数组指针参数的C++ ostream重载
如何避免创建“typedef Point* pPoint;” 对于“<<”重载函数中的第二个参数?
这样做的正确方法是什么?我在哪里可以阅读更多关于它的信息?
c++ - 实现提取和插入运算符 C++
我有一个基本的学生类(必须是一个类)(是的,没有封装,还有命名空间污染,请原谅),我想创建自定义提取和插入运算符。经过无数次的搜索,它仍然无法正常工作。我有的是这个
我已经尝试了很多事情,从 this->name 到 Student::name 到 name 到 Student::student.name 到更改实际上最终工作的函数签名,但它实际上并没有使运算符重载。请停下来:D
编辑:至于具体问题,它是在方法中访问 Student 类的成员。student.name 和 student.score 正在抛出一个
而最下面的只是向其抛出不同解决方案的遗物,但它是范围错误。
编辑2:问题原来是与标题中的守卫发生冲突被称为学生因此预处理器会在任何地方使用“学生”这个词-_-感谢您的帮助
c++ - 为自定义 PriorityQueue 重载提取运算符时遇到问题
我正在尝试为我一直在编写operator>>
的自定义类重载,代码如下:PriorityQueue
这目前适用于stdin
或std::cin
输入,但它不适用于fstream
输入 - 第一个getline
总是从输入中读取一个空行,这样while
循环永远不会被触发,而且我似乎无法跳过它(我尽可能inStream.ignore()
尝试见上文,但这不起作用。
编辑:
目前我只是想让它适用于文件输入,而忽略了它现在只适用于int
数据类型和优先级类型的事实——这些是不相关的(对象本身double
的实际操作也不是)。targetQueue
目前,我只关心在尝试通过文件输入流式传输时解决空行问题。
要传递的示例文件:
其中每行上的数字是\t
分开的。
示例测试:
其中“test.txt”是上面示例文件的格式。
编辑:更简单的例子
代码:
c++ - istream_iterator 不进行零初始化
这是一个最小的、完整的、可验证的示例我知道这不是共产主义。无论如何,给定结构:
我可以执行以下操作:
然而,这给了我结果:
-1215720516 1
2 1
2 3
4 3
4 5
6 5
6 7
8 7
8 9
0 9
要零初始化,Foo
我可以编写代码:
这给了我我的预期结果:
0 1
2 0
0 3
4 0
0 5
6 0
0 7
8 0
0 9
0 0
我知道拥有一个不完全覆盖变量的提取运算符是粗略的。这最初源于我在此处的回答和此处的问题,在我看来,我更自然地期望在读取之间对变量进行零初始化。在任何情况下,是否可以使用这样的变量在读取之间初始化为零,或者我必须使用-loop?istream_iterator
for
c++ - 是否保证标准提取运算符>>在失败时不会更改参数?
如果调用input_stream >> i;
where i
is 算术类型,抛出异常或设置 badbit 等,是否保证i
没有改变?
c++ - 如何使用提取运算符从 C++ 中的类的方法中获取多个值?
就像我们在 cin 中使用的那样:
从输入流中获取多个值并将它们插入到多个变量中。我们如何在自己的类中实现这个方法?从中获取多个值。我尝试了这个发现here:
但是出现错误“与运算符不匹配>>(操作数类型为'example'和'int')”
PS:我知道其他方法,但我想知道这种具体的方法,谢谢。