问题标签 [peek]
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 - 有什么方法可以查看标准输入缓冲区吗?
我们知道,stdin
默认情况下,这是一个缓冲输入;证明是使用任何“保留数据”的机制stdin
,例如scanf()
:
./a.out
你好
你好,左边是10
10
当然是换行...
我一直很好奇,有没有什么办法可以“偷看”stdin
缓冲区而不删除那里可能存在的任何东西?
编辑
一个更好的例子可能是:
输入“at.ct”,现在我ct\n
留下了“数据”()stdin
,而不仅仅是换行符。
macos - clang 和 libc++ istream::peek() 没有设置 eof 标志
我正在使用 Mac OSX 10.8.1 (Mountain Lion) 和:Apple clang 版本 4.1 (tags/Apple/clang-421.11.66) (基于 LLVM 3.1svn) - 最新可用。
关于 eof 检测,使用 libc++ std::istream::peek() 的 Clang 似乎工作不正确。libstdc++ 没有出现问题。
下面的简单示例根据标准库版本给出不同的结果:
测试.cpp:
使用“clang++ -stdlib=libstdc++ test.cpp”编译的文件的输出(这看起来正确):
使用“clang++ -stdlib=libc++ test.cpp”编译的文件的输出(这对我来说看起来不正确):
此问题的最简单解决方法似乎是使用 libstdc++ 而不是 libc++。不幸的是,我需要使用一些 c++11 特性,所以 libc++ 是唯一的解决方案。
我在那里发现了一些帖子,它们报告了 libc++ 和 libstdc++ 在 eof 位行为中的差异,但与我的不同。
有没有人遇到和我一样的问题。有没有通用的解决方案来解决它?我可以想象一些肮脏的解决方法,但我宁愿不使用它。
预先感谢您的帮助
c# - StreamReader.Readline() 真的是计算文件中行数的最快方法吗?
在环顾四周时,我发现了很多关于如何计算文件中行数的讨论。
例如这三个:
c# 如何计算
文本文件中的行数 确定文本文件中的行
数 如何快速计算行数?
所以,我继续前进并最终使用了我能找到的最有效(至少在记忆方面?)的方法:
但是当文件中的行本身很长时,这需要很长时间。真的没有更快的解决方案吗?
我一直在尝试使用StreamReader.Read()
,StreamReader.Peek()
但我不能(或不知道如何)让它们中的任何一个在有“东西”(字符?文本?)时立即进入下一行。
请问有什么想法吗?
结论/结果(根据提供的答案运行一些测试后):
我在两个不同的文件上测试了下面的 5 种方法,我得到了一致的结果,这似乎表明普通旧StreamReader.ReadLine()
方法仍然是最快的方法之一......老实说,在答案中的所有评论和讨论之后,我感到困惑。
文件 #1:
大小:3,631 KB
行数:56,870
文件 #1 的结果以秒为单位:
0.02 --> ReadLine 方法。
0.04 --> 读取方法。
0.29 --> ReadByte 方法。
0.25 --> Readlines.Count 方法。
0.04 --> ReadWithBufferSize 方法。
文件 #2:
大小:14,499 KB
行数:213,424
文件 #1 的结果以秒为单位:
0.08 --> ReadLine 方法。
0.19 --> 读取方法。
1.15 --> ReadByte 方法。
1.02 --> Readlines.Count 方法。
0.08 --> ReadWithBufferSize 方法。
以下是我根据收到的所有反馈测试的 5 种方法:
perl - 如何在 Perl 中查看文件的下一行
我有一段代码可以打开一个文件并解析它。该文本文档具有冗余结构并具有多个条目。我需要在循环中提前查看是否有新条目,如果有,我将能够解析我的程序提取的所有数据。让我首先展示我到目前为止的实现
java - java.util.Stack.peek(未知来源)错误
我正在使用Java Stack,如下所示:
后来在某个时候,我使用了 push、peek 和 pop:
虽然push
工作正常,但我收到以下错误pop
and peek
:
它还在我调用该函数的行的主函数中给出了一个错误。
java - 我的 java 方法代码有什么问题?- 堆栈
在过去的几个小时里,我创建了一个方法,该方法将从堆栈 s1 中获取空元素,并将它们放入 s2 中。然后该类应打印堆栈。方法如下
Eclipse 给我 peek() 和 push() 方法的错误;它允许 pop() 方法。我的理解是这些方法是继承的?任何帮助深表感谢!
c# - 使用 peek 的线程安全重入队列
我的基本问题是,如果队列为空,则需要立即处理队列中的项目,或者如果已处理项目,则将项目添加到队列中并离开。
我正在尝试一种使用 peek 来简化事情的技术,并且想知道可能会遇到什么问题。谢谢!
java - JMS 是否有队列窥视的概念?
从一般计算机科学的角度来看——当我们从逻辑意义上考虑队列时——我们认为能够“窥视”队列中的第一项。
当我查看 JMS API - 它有一个MessageListener
- 它有一个OnMessage()
方法。这有点像“不要给我们打电话——我们会打电话给你”。
JMS 是否有队列窥视的概念?
groovy - Groovy 'Peeking' 使用迭代器?
我在循环中有各种场景,我会在迭代处理项目时“偷看”或“跳过”。
一种情况是我正在枚举文件的行,并且在行的末尾有一个“继续”字符,表示将下一行与当前行结合起来。如果我只是简单地循环并不太难,我可以阅读下一行,然后碰撞我的计数器/索引。
使用我的迭代器执行此操作的模式并不明显。我实际上想在不退出关闭的情况下使用下一行。但我什至不确定这是否可能。这种使用闭包的迭代模式是否有任何好的设计模式,所以我不必求助于不那么常规的循环?它可能是一种迭代器的形式,带有一些用于推送/弹出项目进行处理的堆栈?
python - python2.7 看标准输入
我想打电话sys.stdin.readlines()
而不从标准输入中删除任何内容。我在 Linux 上使用 Python2.7。
例如,我想要的是:
那么 x 和 y 有相同的字符串。如果我可以从标准输入读取并将内容放回原处,那将是可以接受的。
背景:
我有一个模块,它要么将一个文件作为输入和一个 -optional 参数,要么将“一些输入通过管道传输到模块中”和一个 -optional 参数
我有这个工作,它工作正常。我正在检查sys.stdin.isatty()
以确定是否有任何输入管道输入。如果有,如果命令行中有多个参数,模块将抛出错误(可以有一个 -optional 参数,但如果有,则不指定文件标准输入)
我遇到问题的原因是因为我需要在命令行上通过单元测试,但也在 eclipse 中。在命令行上一切正常,但看起来sys.stdin
也使用了 eclipse 的 PyUnit 插件。
如果我调用sys.stdin.readlines()
,则 eclipse 放弃运行单元测试。此外,即使我没有指定任何参数,eclipse 也会将事情推进sys.stdin
,这使得很难确定是否有有效的参数。
在我看来,在sys.stdin.readlines()
不改变内容的情况下以某种方式获取将是一个解决方案,但我不知道该怎么做。解决这个问题的任何答案都会令人满意。
谢谢!
编辑:没有像...这样的运气
编辑:删除了在 tearDown 中恢复标准输入并将其放入测试功能,但没有效果