问题标签 [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++ - 混合输入行结尾时的 std::getline 替代
我正在尝试从 a 中读取行,std::istream
但输入可能包含'\r'
和/或 '\n'
,所以std::getline
没有用。
很抱歉大喊大叫,但这似乎需要强调......
输入可能包含换行符类型或两者。
有没有标准的方法来做到这一点?目前我正在尝试
...但这会跳过空格。哦!std::noskipws
-需要更多的摆弄,现在它很糟糕。
当然必须有更好的方法?!?
c++ - istream::tellg() 与我的自定义 streambuf 类一起使用时返回 -1?
我正在尝试创建一个istream
直接从原始内存缓冲区读取的内容。
我在这里的另一篇文章中找到了一个很好的方法:
然后我istream
使用这个创建我的membuf
:
然后我阅读了使用getline()
和>>
运算符,一切都很棒。但是,我似乎无法使用seekg()
回退到缓冲区的开头,并且istream::tellg()
总是返回-1
.
我是否需要编写更多代码才能使这些工作,或者这注定要失败?
c++ - ifstream 的 operator>> 来检测行尾?
我有一个不规则的列表,其中的数据如下所示:
请注意,有些行有 2 个数字,有些行有 3 个数字。目前我的输入代码如下所示
但是,我想忽略只有 2 个数字的行,是否有一个简单的解决方法?(最好不使用字符串操作和转换)
谢谢
c++ - 使用“CompressedFolder”COM 对象解压
我使用 Win API 解压了一个 zip 存档。该 API 基于 COM 接口;COM 模型可通过CompressFolder
COM 对象访问。
我遇到了以下问题。当我解压缩一个小文件(3.5 MB)时,需要很长时间。我发现这IStream::Read()
会导致这个问题。它工作缓慢。我使用一个小缓冲区(1KB)在多次迭代中读取这个文件;如果我使用几乎等于文件大小的缓冲区,那么它的工作速度会更快。
即使缓冲区大小远小于文件大小,我怎样才能让它快速解包?可能吗?我认为这很重要,因为文件可能很大,比如 1 GB。
这是读取文件的代码片段:
我有一个附带问题:有没有方法可以在IStream
不读取文件的情况下检测打包文件的大小?
c++ - 在 C++ 中仅解析来自 istream 的数字
我有一堆如下所示的输入文件:
我需要编写一个函数,一次解析这些输入一个数字,因此我需要能够按数字分隔输入,例如:8、7、15、0、另一个 0,依此类推。
到目前为止,我想到的唯一方法是使用 istream.get() 来返回下一个字符的 ASCII 码,我可以通过将其转换为 char 来将其转换回其字符格式。然后我会检查字符是否是数字(所以括号被忽略)但是这样,任何双(或三)位数字一次只能读取一个数字。
实现这一目标的最佳方法是什么?
顺便说一句,我必须使用 istream。这是我不允许更改的规范的一部分
谢谢
c++ - istream_iterator 在读取字符时忽略 EOF (Ctrl+D)
我正在尝试istream_iterator
用于从cin
. 我读过按Ctrl+D发送一个EOF
结束输入流的字符。不幸的是,它出了点问题。这是我的代码:
我正在运行它并输入:as df
,然后按Ctrl+ D。它只输出asd
没有最后一个f
,然后挂起等待输入。当我键入gh
并再次按Ctrl+D时,它最后打印剩余f
的,以及g
下一个输入的,但又没有最后一个h
。当我最终按下Ctrl+D而不输入任何内容时,它会打印剩余的内容h
并退出。
我希望它能够读取asdf
并退出,因为我已经在第一个序列的末尾按下了Ctrl+ 。D
为什么得到后还在等待输入EOF
?
为什么它不打印之前读取的最后一个字符EOF
?
为什么它只在我按Ctrl+D而不输入任何内容时才退出?
这个循环需要如何改变才能以我期望的方式运行?Ctrl(即在输入中获得+序列后立即停止阅读D,无论我之前是否输入过任何内容,并阅读所有字符直到EOF
)。
c++ - std::istream 提取设置失败位无明显原因
我正在创建一个原始类型包装器,它可以使用 boost::lexical_cast 从字符串中设置其值。它工作正常,但由于某种原因 std::istream 提取运算符设置了故障位。以下程序打印:
123.45
例外:ios_base::failbit 设置
但是,如果您注释掉“inStream.exceptions(...”这一行,它会起作用并打印:
123.45
123.45
无论您是否使用 unicode 编译,或者如果您使用 int 或 float 作为 ValueType,都没有什么区别,在任何情况下都会设置故障位。
为什么 std::istream 会认为出了问题?
c++ - 使用自定义分隔符从文件中读取文本字段
我正在为我正在学习的课程解决一个问题,我们需要将文本从文件读取到字符串的二维表(称为“字符串表 [] []”)。我正在阅读的文本文件格式如下:
Ain el Beida # - # - # OEB # 阿尔及利亚 # 非洲 # F # 42578 # 61997 # 90560 # #
Segbana # - # - # ALI # 贝宁 # 非洲 # F # -1 # 10219 # -1 # #
Skelmersdale # - # - # LAN # England # Europe # F # 42611 # 42104 # 39279 # #
#
如您所见,每个字段由'#'分隔,行尾由2个#表示,文件末尾由3个#表示。我一直在研究隔离每个字段的几种不同方法,以便将其保存到数组中,但到目前为止还没有找到任何适合我的目的的方法。
几个小时以来,我一直在努力解决这个问题,我非常感谢任何关于如何让它发挥作用的建议。
c++ - 堆栈上的C ++流多态性?
我想做这样的事情:
即,将文本解释为文件名,或者,如果不存在这样的文件,则使用其内容而不是文件的内容。
我当然可以使用std::wistream * input
and then new
anddelete
来处理实际的流。但是,我必须将所有这些封装在一个类中(构造函数和析构函数,即用于异常安全的适当 RAII)。
在堆栈上还有另一种方法吗?
c++ - 来自 istream 的子流
假设我有一个ifstream
代表一个包含许多聚合在一起的子文件的大文件。我希望能够istream
从代表文件一部分的较大ifstream
(给定大小和offest)创建一个“子”,以便其他代码可以从该子流中读取,就好像它是一个独立的istream
.
关于我如何做到这一点的任何想法?
编辑 - 我宁愿避免提升。