问题标签 [istream]

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 投票
3 回答
8578 浏览

c++ - 用于输出和输入的文件名的简单用户请求

如何要求用户输入我的程序需要读取的文件名并让它输出带有.out扩展名的名称?

例子:

但我需要将文件保存为 filename.out 而不是原始文档类型(IE:.txt)

我试过这个:

但我得到这些错误:

c:\users\matt\documents\visual studio 2008\projects\dspi\dspi\dspi.cpp(41):错误 C2228:'.txt' 左侧必须有类/结构/联合 1> 类型为 'char [256 ]'

c:\users\matt\documents\visual studio 2008\projects\dspi\dspi\dspi.cpp(42):错误 C2228:'.out' 左侧必须有类/结构/联合 1> 类型为 'char [256 ]'

0 投票
4 回答
499 浏览

c++ - “复制”一个c ++ istream?

对于我自己的小解析器框架,我正在尝试定义(类似于)以下函数:

然后我可以写这样的东西:(也许不是最好的例子)

任何帮助是极大的赞赏。

0 投票
4 回答
2205 浏览

c++ - “cin”和“File”的 C++ 通用接口

cin和文件输入有通用接口吗?

我想制作一个具有可选参数的程序

如果指定了输入文件,则应从该文件中读取,否则应从 cin 中读取。

据我所知,它们都实现了istream. 您将如何设置它以便我可以执行类似的操作in >> var,其中.inistream

0 投票
2 回答
125 浏览

c++ - istream 解析 EVENT_TYPE(param1;param2; ...)

我正在尝试找到一种优雅的方式来解析字符串,例如:

EVENT_TYPE 是许多字符串常量之一,每个都有零个或多个参数。到目前为止,我认为鉴于刺“s”包含 EVENT_TYPE(param1;param2) 我会写:

给出一个const string&并告诉这种方式“跳过这些字符”会很好。好吧,事实并非如此。你会怎么做呢?:-)

谢谢你的建议!

0 投票
4 回答
3083 浏览

c++ - 了解 std::istream::read 的设计

std::istream有原型应该通过调用得到实际读取的字节数istream& read (char* s, streamsize n)可以从中知道istream::gcount()其有效性。istreamios::good

我正在与我的一位同事讨论我试图编写的另一个流类的实现,我说我可能会遵循这个设计;但他说,与其让用户每次都调用gcount,不如像这样读取原型istream& read (char* s, streamsize n, size_t &bytes_read),这样它就可以在一次调用中结束,而前者更笨拙。我无法为std的设计选择辩护。背后的真正原因是istream::read什么?

0 投票
2 回答
411 浏览

c++ - 如何释放通过 istream 阻塞的线程

我创建了两个类。一个用于输入读取(通过 istream 对象)和解析,另一个用于处理解析器的输出。
每一种都有一个实例。
我让解析器在调用 istream::get() 的循环中运行,然后根据输入为第二个对象创建命令。然后将这些命令放在第二个对象在单独线程中处理的队列中。
现在很明显,我最终需要能够发送“退出”命令。但是问题出现了:“退出”命令也需要结束解析循环,但我找不到一种方法来指示解析器应该退出,因为它被 istream::get() 捕获。
我需要一种方法将其从该方法中唤醒,但我找不到任何...
我曾想过通过从 istream::rdbuf() 创建一个 ostream 对象来向 istream 对象(在本例中为 cin)写入某种“终止序列”。但这不起作用 - 在尝试写入缓冲区后设置了坏位。
在 StackOverflow 的另一个问题中,我看到了提到的 Boost 库的 asio 类,但我宁愿不依赖第三方库。
有没有办法从 istream::get() 唤醒线程 - 即有没有办法从程序中写入 istream 缓冲区(可能假设它实际上是 cin)?
另一种方法是杀死我认为可以接受的线程,因为在该特定位置不需要清理。但这怎么能做到呢?(我依赖于 POSIX 线程实现)

0 投票
1 回答
773 浏览

.net - .NET 等效于 Delphi IStream 初始化

我有以下德尔福代码:

它实际上将 IStream 对象传递给 COM 组件。.NET 有“System.Runtime.InteropServices.ComTypes.IStream”接口,但我想不出正确的使用方法。如何使用数据初始化 IStream 并将其传递给 .NET 中的 COM 对象?

0 投票
2 回答
3130 浏览

c++ - C++ 迭代 istream

解析或迭代的最佳方法是istream什么?我需要创建一个函数,它接受一个istream,解析它并创建一个对象,所以想知道最简单的方法来做到这一点。即使可以将其转换string为花花公子的东西。

0 投票
2 回答
1692 浏览

c++ - 覆盖字符串类的运算符>>

我只是有一个简单的问题。我需要为自定义 String 类覆盖运算符 >> ,但我不知道该怎么做。

我知道这段代码有效,因为这是我解决问题的原始方法:

但是,根据规范(这是一项家庭作业),我需要一次读取字符 1 以手动检查空格并确保字符串对于 data[] 来说不会太大。因此,我将代码更改为以下内容:

但是,当执行此新代码时,它只会卡在用户输入循环中。那么如何使用 is.get() 逐字符读取数据而不等待更多用户输入?或者我应该使用 .get() 以外的东西吗?

0 投票
5 回答
4975 浏览

c++ - 对`std::istreambuf_iterator`的使用感到困惑

我已经使用<<流运算符为对象实现了反序列化例程。例程本身使用一个istreambuf_iterator<char>从流中一个一个地提取字符,以构造对象。

最终,我的目标是能够使用 an 遍历流istream_iterator<MyObject>并将每个对象插入到vector. 非常标准,除了当它到达流尾时我无法istream_iterator停止迭代。现在,它只是永远循环,即使调用istream::tellg()表明我在文件末尾。

这是重现问题的代码:

我知道在这个简单的例子中我什至不需要 istreambuf_iterator,但我只是想简化问题,以便人们更有可能回答我的问题。

所以这里的问题是,即使istreambuf_iterator到达流缓冲区的末尾,实际的流本身也不会进入EOF状态。调用istream::eof()返回 false,即使istream::tellg()返回文件中的最后一个字节,istreambuf_iterator<char>(ifs)并将 true与 进行比较istreambuf_iterator<char>(),这意味着我肯定在流的末尾。

我查看了 IOstreams 库代码,以确切了解它如何确定 anistream_iterator是否位于结束位置,并且基本上它检查是否istream::operator void*() const评估为true. 这个 istream 库函数只返回:

换句话说,0如果设置了故障位,则返回 (false)。然后它将这个值与默认构造的实例中的相同值进行比较,istream_iterator以确定我们是否在最后。

因此,当与结束迭代器比较为真时,我尝试在std::istream& operator >> (std::istream& is, Foo& f)例程中手动设置故障位。istreambuf_iterator这完美地工作,并正确终止了循环。但现在我真的很困惑。似乎istream_iterator 肯定会检查std::ios::failbit以表示“流结束”条件。但这不std::ios::eofbit就是为了什么吗?我认为failbit是针对错误情况,例如,如果fstream无法打开 an 的基础文件或其他情况。

那么,为什么我需要调用istream::setstate(std::ios::failbit)来终止循环呢?