生成*char缓冲区

generating *char buffer

本文关键字:缓冲区 char 生成      更新时间:2023-10-16

我需要创建一个包含300个符号的缓冲区,并将其传递给下面描述的函数:

void printThis(char *info);

生成这个缓冲区的最佳方式是什么?

如果这是好的:

char *buffer = new char()

那么,如何向这个缓冲区添加字符呢?以下方法不好,会引发访问冲突:

for (int i=0; i<300;i++)
{
   sprintf(s,"%s",'a');
}
std::vector<char> buffer(300, 'a');
// I'm guessing that printThis wants a zero-terminated string
buffer.push_back(0);
printThis(&buffer[0]);

如果您使用的是C++11库,那么buffer.data()看起来可能比&buffer[0]更好。

如果你真的想自己管理内存(提示:你不想),可以创建一个自动数组:

char buffer[300];

或动态阵列:

char * buffer = new char[300];
// Don't forget to delete it, and hope than nothing threw an exception
delete [] buffer;

如果这是好的:

事实并非如此。真的,真的,不是。它甚至不是缓冲区。这也不是一个好主意。

std::string s;
for(int i = 0; i < 300; i++)
    s.push_back('a'); // good job all round
std::cout << s; // 300*a. Why? Who knows?
printThis(s.c_str());