gpt4 book ai didi

c++ - 为字符缓冲区实现 istream get?

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:31 26 4
gpt4 key购买 nike

我想实现以下有一个字符缓冲区,我试图移植的代码将这个字符缓冲区放在一个流中,然后像这样获取

 char *buffer; //this is initialized
int bufferSize; //this is initlized
std::istringstream inputStream (std::string(buffer, bufferSize));
int getVal = inputStream.get();

编辑:上面的代码是最优的吗,其中对于 getVal,您将整个缓冲区复制到流中,然后在流上执行获取操作。

如何从缓冲区本身获取 getVal 值。

最佳答案

我不认为它是最佳的,仅仅是因为构造一个 std::string 可能会导致整个缓冲区的复制。然而,istringstream 的用法看起来不错。

要直接从缓冲区中获取数据,您可以这样做:

int bufferPos = 0;

char getFromBuffer ()
{
if (bufferPos < bufferSize)
{
return buffer[bufferPos++];
}
else
{
return 0;
}
}

尽管如此,您可能希望为此设置一个更好的界面。可能还有更好的方法来构建带有 char* 的 istringstream,但我在快速浏览文档时没有看到。

关于c++ - 为字符缓冲区实现 istream get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/600428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com