问题标签 [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.
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 ]'
c++ - “复制”一个c ++ istream?
对于我自己的小解析器框架,我正在尝试定义(类似于)以下函数:
然后我可以写这样的东西:(也许不是最好的例子)
任何帮助是极大的赞赏。
c++ - “cin”和“File”的 C++ 通用接口
cin和文件输入有通用接口吗?
我想制作一个具有可选参数的程序
如果指定了输入文件,则应从该文件中读取,否则应从 cin 中读取。
据我所知,它们都实现了istream
. 您将如何设置它以便我可以执行类似的操作in >> var
,其中.in
istream
c++ - istream 解析 EVENT_TYPE(param1;param2; ...)
我正在尝试找到一种优雅的方式来解析字符串,例如:
EVENT_TYPE 是许多字符串常量之一,每个都有零个或多个参数。到目前为止,我认为鉴于刺“s”包含 EVENT_TYPE(param1;param2) 我会写:
给出一个const string&并告诉这种方式“跳过这些字符”会很好。好吧,事实并非如此。你会怎么做呢?:-)
谢谢你的建议!
c++ - 了解 std::istream::read 的设计
std::istream
有原型应该通过调用得到实际读取的字节数istream& read (char* s, streamsize n)
,也可以从中知道istream::gcount()
其有效性。istream
ios::good
我正在与我的一位同事讨论我试图编写的另一个流类的实现,我说我可能会遵循这个设计;但他说,与其让用户每次都调用gcount,不如像这样读取原型istream& read (char* s, streamsize n, size_t &bytes_read)
,这样它就可以在一次调用中结束,而前者更笨拙。我无法为std
的设计选择辩护。背后的真正原因是istream::read
什么?
c++ - 如何释放通过 istream 阻塞的线程
我创建了两个类。一个用于输入读取(通过 istream 对象)和解析,另一个用于处理解析器的输出。
每一种都有一个实例。
我让解析器在调用 istream::get() 的循环中运行,然后根据输入为第二个对象创建命令。然后将这些命令放在第二个对象在单独线程中处理的队列中。
现在很明显,我最终需要能够发送“退出”命令。但是问题出现了:“退出”命令也需要结束解析循环,但我找不到一种方法来指示解析器应该退出,因为它被 istream::get() 捕获。
我需要一种方法将其从该方法中唤醒,但我找不到任何...
我曾想过通过从 istream::rdbuf() 创建一个 ostream 对象来向 istream 对象(在本例中为 cin)写入某种“终止序列”。但这不起作用 - 在尝试写入缓冲区后设置了坏位。
在 StackOverflow 的另一个问题中,我看到了提到的 Boost 库的 asio 类,但我宁愿不依赖第三方库。
有没有办法从 istream::get() 唤醒线程 - 即有没有办法从程序中写入 istream 缓冲区(可能假设它实际上是 cin)?
另一种方法是杀死我认为可以接受的线程,因为在该特定位置不需要清理。但这怎么能做到呢?(我依赖于 POSIX 线程实现)
.net - .NET 等效于 Delphi IStream 初始化
我有以下德尔福代码:
它实际上将 IStream 对象传递给 COM 组件。.NET 有“System.Runtime.InteropServices.ComTypes.IStream”接口,但我想不出正确的使用方法。如何使用数据初始化 IStream 并将其传递给 .NET 中的 COM 对象?
c++ - C++ 迭代 istream
解析或迭代的最佳方法是istream
什么?我需要创建一个函数,它接受一个istream
,解析它并创建一个对象,所以想知道最简单的方法来做到这一点。即使可以将其转换string
为花花公子的东西。
c++ - 覆盖字符串类的运算符>>
我只是有一个简单的问题。我需要为自定义 String 类覆盖运算符 >> ,但我不知道该怎么做。
我知道这段代码有效,因为这是我解决问题的原始方法:
但是,根据规范(这是一项家庭作业),我需要一次读取字符 1 以手动检查空格并确保字符串对于 data[] 来说不会太大。因此,我将代码更改为以下内容:
但是,当执行此新代码时,它只会卡在用户输入循环中。那么如何使用 is.get() 逐字符读取数据而不等待更多用户输入?或者我应该使用 .get() 以外的东西吗?
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)
来终止循环呢?