标签: buffer

MemoryStream.Read不会将字节复制到缓冲区 - c#

我真的没有得到它,这让我疯狂.我有这四行:

Image img = Image.FromFile("F:\\Pulpit\\soa.bmp");
MemoryStream imageStream = new MemoryStream();
img.Save(imageStream, ImageFormat.Bmp);
byte[] contentBuffer = new byte[imageStream.Length];
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
Run Code Online (Sandbox Code Playgroud)

调试时我可以看到imageStream中的字节值.在imageStream之后.我检查contentBuffer的内容,我只看到255个值.我不明白为什么会这样?在这几行中没有什么可错的!如果有人能帮助我,我将不胜感激!谢谢,agnieszka

c# buffer memorystream image

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

为什么C++中的缓冲很重要?

我试图打印"Hello World"200,000次,它让我永远,所以我必须停下来.但是在我添加一个char数组作为缓冲区后,它花了不到10秒.为什么?

在添加缓冲区之前:

#include <iostream> 
using namespace std;

int main() {
        int count = 0;
        std::ios_base::sync_with_stdio(false);
        for(int i = 1; i < 200000; i++)
        {       
                cout << "Hello world!\n";
                count++;
        }
                cout<<"Count:%d\n"<<count;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是在添加缓冲区之后:

#include <iostream> 
using namespace std;

int main() {
        int count = 0;
        std::ios_base::sync_with_stdio(false);
        char buffer[1024];
        cout.rdbuf()->pubsetbuf(buffer, 1024);
        for(int i = 1; i < 200000; i++)
        {       
                cout << "Hello world!\n";
                count++;
        }
                cout<<"Count:%d\n"<<count;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这让我想起了Java.使用BufferReader读取文件有什么好处?

c++ buffer

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

如何直接从char*数组创建一个std :: string而不复制?

假设我有一个字符数组,我已在堆上分配,并且我想将其转换为std :: string.目前我正在做以下事情:

char *array = new char[size];
WriteIntoArray(array, size);
std::string mystring(array);
delete[] array;
return mystring; // or whatever
Run Code Online (Sandbox Code Playgroud)

从我在互联网上读到的内容(http://www.cplusplus.com/reference/string/string/string/),字符串构造函数执行我传递它的缓冲区的副本,让我释放缓冲区(稍后,该字符串释放其内部缓冲区).我想要做的是分配我的缓冲区,将它的控制转移到字符串,然后在它被破坏时让它释放我的缓冲区.

这个问题从字符*初始化的std :: string没有副本看起来前途无量,但我的代码依赖于(在上面的例子中"WriteIntoArray")API调用它必须写入字符数组,所以我必须创建一个C风格char*buffer,并且不能将我的代码转换为仅使用内置字符串操作(这是建议的答案).

有没有一些标准的方法来做到这一点,或者我应该写我自己的字符串类(呃)?谢谢!

c++ string buffer stl

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

Emacs切换出终端

M-x term使用Emacs在Emacs中运行终端模式时,C-x C-o我无法切换到另一个缓冲区来继续处理事情.我知道这是可能的,M-x shell但是使用这个命令,shell的某些方面不起作用(少,更多,手册页等......).我想知道是否有办法绕过这个或者当使用终端模式时,你被限制在终端打开的缓冲区中,直到你退出.

emacs shell terminal buffer

18
推荐指数
1
解决办法
7697
查看次数

打印一个char的缓冲区,在C中传递长度

我有一个缓冲区,我通过串口接收.当我收到某个特征时,我知道已经到了一个完整的行,我想用printf方法打印它.但是每一行都有不同的长度值,当我刚开始时:

printf("%s", buffer);
Run Code Online (Sandbox Code Playgroud)

我正在打印该行以及属于前一行的其他字符(如果它比当前行长).

在这里读到,至少在C++中,有可能告诉你想要阅读多少字符%s,但它没有例子,我不知道如何在C中做.任何帮助?

编辑:完美.所以我有三个解决方案: - for使用循环字符 - 使用终止字符 - 或使用.*打印字符串char .

问题是:哪一个更快?因为我正在研究微芯片PIC,我希望它尽可能快地发生

c printf buffer

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

Linux上文件的默认缓冲区大小

文件规定,对于缓冲的默认值是: If omitted, the system default is used.我目前在Red Hat Linux 6上,但我无法弄清楚为系统设置的默认缓冲.

任何人都可以指导我如何确定系统的缓冲?

python linux buffer file rhel6

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

C中的缓冲和非缓冲输入

有没有办法弄清楚inputbufferedunbuffered(除了手册页.)?我们不能通过查看函数的名称来弄清楚吗?也为echoingnonechoing... 对于快速参考在哪里可以找到它具有细节的清单Buffered,Unbuffered,echoingnonechoing投入?

c buffer input

18
推荐指数
1
解决办法
6564
查看次数

为什么要使用shm_open?

做的有什么好处:shm_open跟着一个mmap
为什么不创建一个常规文件,然后将其传递fdmmap
我看不到它的优点shm_open- 这些只是参考,不是吗?

我读过全家人.在我看来,"秘密"在于mmaping动作 - 文件"类型"似乎毫无意义.

任何指针都会很好,尤其是性能帐户.
我的上下文是一个(循环可写的)缓冲区(比如128MB),它将被不断地写成一个进程,并且不断地从另一个进程转发.

举个例子:这个 open/mmap方法有什么问题.

编辑
准确地说,下面的一个比另一个更好:

fd = open("/dev/shm/myshm.file", O_CREAT|O_RDWR, S_IRUSR | S_IWUSR);
mem = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
Run Code Online (Sandbox Code Playgroud)

fd = shm_open("/myshm.file", O_RDWR|O_CREATE, S_IRUSR | S_IWUSR);
mem = mmap(...same as before...);
Run Code Online (Sandbox Code Playgroud)

当我在fs open下创建一个带有常规文件的文件/dev/shm,并向其转储了一堆垃圾时,我的可用内存下降了1G,我的可用磁盘空间保持不变.
这两种方法有什么区别?

c linux buffer mmap shared-memory

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

在golang中清除bytes.buffer的正确方法是什么?

我正在尝试清除a bytes.Buffer,但文档中没有这样的功能

也许我应该更新缓冲区?什么是正确的方法呢?

buffer   = bytes.NewBufferString("")
buffer.Grow (30000)
Run Code Online (Sandbox Code Playgroud)

buffer go

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

Vim选项卡和缓冲区

我不久前开始使用Vim了.到目前为止 - 我很喜欢这个编辑器的经验.直到最近我才开始在Vim中使用Tabs.

我必须承认,我对Vim中的整个缓冲区/标签/窗口概念感到有点沮丧.例如,假设我正在处理与一个"项目"相关的许多文件.所有文件都在选项卡中打开.假设我发出一个命令,它将使交换机活动缓冲区(例如,用CTRL-跳转到函数定义).结果是在当前选项卡中我看到带有文件的缓冲区,其中定义了函数.但我已经在另一个标签中有相同的缓冲区!现在我有两个相同内容的选项卡.

是否有可能以某种方式将缓冲区与选项卡绑定在一起?或者,如果在某些窗口/选项卡中打开要切换到的缓冲区是否正在打开,请切换到该窗口/选项卡?

到目前为止,我已经找到了以下内容(它没有解决上述问题,但在某种程度上证明了我正在寻找的Vim行为):

set switchbuf=usetab
Run Code Online (Sandbox Code Playgroud)

现在,当使用:sb,:sbnext,:sbprev而不是:b,:bnext,:bprev切换缓冲区时,Vim将检查缓冲区是否在选项卡/窗口中打开并切换到该选项卡/窗口.

vim tabs buffer

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

标签 统计

buffer ×10

c ×3

c++ ×2

linux ×2

c# ×1

emacs ×1

file ×1

go ×1

image ×1

input ×1

memorystream ×1

mmap ×1

printf ×1

python ×1

rhel6 ×1

shared-memory ×1

shell ×1

stl ×1

string ×1

tabs ×1

terminal ×1

vim ×1