问题标签 [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.

0 投票
3 回答
21926 浏览

c - 有什么方法可以查看标准输入缓冲区吗?

我们知道,stdin默认情况下,这是一个缓冲输入;证明是使用任何“保留数据”的机制stdin,例如scanf()

./a.out
你好
你好,左边是10

10当然是换行...

我一直很好奇,有没有什么办法可以“偷看”stdin缓冲区而不删除那里可能存在的任何东西?

编辑
一个更好的例子可能是:

输入“at.ct”,现在我ct\n留下了“数据”()stdin,而不仅仅是换行符。

0 投票
1 回答
447 浏览

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 位行为中的差异,但与我的不同。

有没有人遇到和我一样的问题。有没有通用的解决方案来解决它?我可以想象一些肮脏的解决方法,但我宁愿不使用它。

预先感谢您的帮助

0 投票
7 回答
25473 浏览

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 种方法:

0 投票
2 回答
9719 浏览

perl - 如何在 Perl 中查看文件的下一行

我有一段代码可以打开一个文件并解析它。该文本文档具有冗余结构并具有多个条目。我需要在循环中提前查看是否有新条目,如果有,我将能够解析我的程序提取的所有数据。让我首先展示我到目前为止的实现

0 投票
1 回答
7400 浏览

java - java.util.Stack.peek(未知来源)错误

我正在使用Java Stack,如下所示:

后来在某个时候,我使用了 push、peek 和 pop:

虽然push工作正常,但我收到以下错误popand peek

它还在我调用该函数的行的主函数中给出了一个错误。

0 投票
3 回答
791 浏览

java - 我的 java 方法代码有什么问题?- 堆栈

在过去的几个小时里,我创建了一个方法,该方法将从堆栈 s1 中获取空元素,并将它们放入 s2 中。然后该类应打印堆栈。方法如下

Eclipse 给我 peek() 和 push() 方法的错误;它允许 pop() 方法。我的理解是这些方法是继承的?任何帮助深表感谢!

0 投票
2 回答
462 浏览

c# - 使用 peek 的线程安全重入队列

我的基本问题是,如果队列为空,则需要立即处理队列中的项目,或者如果已处理项目,则将项目添加到队列中并离开。

我正在尝试一种使用 peek 来简化事情的技术,并且想知道可能会遇到什么问题。谢谢!

0 投票
2 回答
4909 浏览

java - JMS 是否有队列窥视的概念?

从一般计算机科学的角度来看——当我们从逻辑意义上考虑队列时——我们认为能够“窥视”队列中的第一项。

当我查看 JMS API - 它有一个MessageListener- 它有一个OnMessage()方法。这有点像“不要给我们打电话——我们会打电话给你”。

JMS 是否有队列窥视的概念?

0 投票
3 回答
1099 浏览

groovy - Groovy 'Peeking' 使用迭代器?

我在循环中有各种场景,我会在迭代处理项目时“偷看”或“跳过”。

一种情况是我正在枚举文件的行,并且在行的末尾有一个“继续”字符,表示将下一行与当前行结合起来。如果我只是简单地循环并不太难,我可以阅读下一行,然后碰撞我的计数器/索引。

使用我的迭代器执行此操作的模式并不明显。我实际上想在不退出关闭的情况下使用下一行。但我什至不确定这是否可能。这种使用闭包的迭代模式是否有任何好的设计模式,所以我不必求助于不那么常规的循环?它可能是一种迭代器的形式,带有一些用于推送/弹出项目进行处理的堆栈?

0 投票
1 回答
1746 浏览

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()不改变内容的情况下以某种方式获取将是一个解决方案,但我不知道该怎么做。解决这个问题的任何答案都会令人满意。

可能重复:窥视 Python 中的 Popen 管道流

谢谢!

编辑:没有像...这样的运气

编辑:删除了在 tearDown 中恢复标准输入并将其放入测试功能,但没有效果