标签: peek

使用C++中的'MSG_PEEK'获取'recv'中套接字可用的字节数

C++具有以下函数来从套接字接收字节,它可以检查MSG_PEEK标志可用的字节数.使用MSG_PEEK,'recv'的返回值是socket中可用的字节数:

#include <sys/socket.h>
ssize_t recv(int socket, void *buffer, size_t length, int flags); 
Run Code Online (Sandbox Code Playgroud)

我需要在不创建的buffer情况下获取套接字中可用的字节数(不分配内存buffer).有可能吗?怎么样?

c sockets buffer recv peek

13
推荐指数
1
解决办法
4万
查看次数

StreamReader.Readline()真的是计算文件中行数的最快方法吗?

在环顾四周的时候,我发现了很多关于如何计算出文件中行数的讨论.

例如这三个:
c#我 如何计算
文本文件中的行数确定文本文件中的行数
如何快速计算行数?

那么,我继续前进并最终使用了我能找到的最有效(至少是内存方式?)方法:

private static int countFileLines(string filePath)
{
    using (StreamReader r = new StreamReader(filePath))
    {
        int i = 0;
        while (r.ReadLine() != null) 
        { 
            i++; 
        }
        return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当文件中的行本身非常长时,这将永远存在.真的没有更快的解决方案吗?

我一直试图使用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 - > …

c# lines readline streamreader peek

13
推荐指数
2
解决办法
2万
查看次数

在队列中选择特定对象(即peek +1)

如果Peek返回队列中的下一个对象,是否有可用于获取特定对象的方法?例如,我想在队列中找到第三个对象并更改其中一个值?

现在我只是通过队列做一个f​​oreach,这可能是最好的解决方案,但我不知道是否有一些特殊的你可以使用peek?即Queue.Peek(2)

c# queue peek

11
推荐指数
2
解决办法
3万
查看次数

IEnumerator是否有"HasNext"方法?

使用Java Iterator,我使用该hasNext方法来确定迭代是否具有更多元素(不消耗元素) - 因此,hasNext就像一个" Peek"方法.

我的问题:C#的通用s 有什么类似于" hasNext"或" Peek"的方法IEnumerator吗?

c# ienumerator iterator peek

10
推荐指数
2
解决办法
2万
查看次数

C++ fstream函数读取一行而不提取?

在C++中,fstream库(或任何库)中是否有一个函数允许我在不提取的情况下将行读取到'\n'的分隔符?

我知道peek()函数允许程序"偷看"它读取的下一个字符而不提取,但是我需要一个peek()之类的函数来完成这个但是整行.

c++ fstream extraction peek

10
推荐指数
1
解决办法
6508
查看次数

为什么Stack.Peek()是一个方法?

如标题中所示.为什么Stack类需要一个方法来返回顶层对象的引用?我总是被告知,方法表明涉及一些计算,而简单的对象应该返回属性而不是.Peek()方法没有参数,在代码级别上它(我认为)是一个简单的操作.

问题是:是否存在特定的原因?任何影响性能的隐藏行为?

编辑:我不知道类的实现,但是如果方法使用下面的枚举器,那么多次迭代到最后一个元素是不明智的.另一方面,如果它是单一的IList,那么它不应该对性能产生更大的影响.

c# stack peek

9
推荐指数
2
解决办法
4309
查看次数

帮助:ZX81'BASIC'Peek功能

我需要一种方法来查找角色('<')是否撞墙(黑色像素图形)

- 在ZX81游戏中.

我一直在寻找另一款使用代码的游戏

如果偷看(偷看16398 + 256*偷看16399)=代码" blackpixel graphic "然后......

这似乎对他们有用......

这是正确的代码吗?

我真的不知道地址和获取内存和东西.

请帮我...

- 如果你知道更好的方法.请回答:) - 有人提到'光标位置'在ZX81上到底是什么?谢谢,

peek zx81

8
推荐指数
1
解决办法
492
查看次数

How to properly use cin.peek()

This function is supposed to read a fraction and place it in an array. If the user enters '0' the function is supposed to exit. I am trying to do this using the cin.peek() function but execution always goes into the if statement and doesn't allow the user to exit.

How should I properly code this (I am open to not using peek(), I thought it was the simplest way of doing it.)

Thanks!

void enterFrac(Fraction* fracs[], int& index)
    { …
Run Code Online (Sandbox Code Playgroud)

c++ struct cin peek

8
推荐指数
1
解决办法
4万
查看次数

Groovy'偷看'使用迭代器?

我在循环中有各种场景,我会在迭代项目进行处理时"偷看"或"跳过".

一种情况是我通过文件的行来枚举,并且在行的末尾有一个"延续"字符,表示将下一行与当前行组合.如果我只是循环而不是太难,我可以阅读下一行,然后碰到我的计数器/索引.

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

groovy closures iterator peek

7
推荐指数
1
解决办法
820
查看次数

python2.7偷看stdin

我想打电话sys.stdin.readlines()而不从stdin中删除任何内容.我在Linux上使用Python2.7.

例如,我想要的是:

x = sys.stdin.readlines()
y = sys.stdin.readlines()
Run Code Online (Sandbox Code Playgroud)

然后x和y具有相同的字符串.如果我能从stdin读取并将内容放回去,那将是可以接受的.

背景:

我有一个模块,EITHER将一个文件作为输入和一个-optional参数或"一些输入通过管道进入模块"和一个-optional参数

mymodule.py myfile -option
or
echo "some input" | mymodule.py -option
Run Code Online (Sandbox Code Playgroud)

我有这个工作,它工作正常.我正在检查sys.stdin.isatty()以确定是否有输入管道输入.如果存在,如果命令行中有多个参数,模块将抛出错误(可能有一个-optional参数,但如果有,则指定没有文件标准输入)

我遇到问题的原因是因为我需要在命令行上传递单元测试,但也要在eclipse中传递.在命令行上一切正常,但它看起来像是用于eclipse的PyUnit插件sys.stdin.

如果我打电话sys.stdin.readlines(),那么eclipse会放弃运行单元测试.另外,sys.stdin即使我没有指定任何参数,eclipse正在推动进入,这使得很难确定是否存在有效参数.

在我看来,以某种方式获得sys.stdin.readlines()不改变内容将是一个解决方案,但我不知道如何做到这一点.解决这个问题的任何答案都会令人满意.

可能重复:在Python中查看Popen管道流

谢谢!

编辑:没有任何运气如...

foo = sys.stdin.readlines()
sys.stdin.write(foo)
Run Code Online (Sandbox Code Playgroud)

编辑:删除了在tearDown中恢复stdin并将其放入测试函数中,但没有效果

python stdin eclipse-plugin peek

7
推荐指数
1
解决办法
1362
查看次数