生成*char缓冲区
generating *char buffer
我需要创建一个包含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());
相关文章:
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- char* 缓冲区 = C++ 中的新 vs char 缓冲区 []
- char p[0]表示自动分配的缓冲区还是安全指针
- 通过 char* 缓冲区读取 int 的行为是不同的,无论是正数还是负数
- 将 char* 推送到矢量时出现问题,但在每次迭代后,它会将指向相同值缓冲区的指针添加到矢量中
- 缓冲区用不需要的数据填充 char 数组中的最后一个空格
- 当需要将char缓冲区转换为字符串时
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- 将int转换为十六进制并将其存储到char缓冲区中
- 从 char* 缓冲区读取int32_t的惯用 cpp14 方法是什么?
- 如何在C#struct中声明和使用固定尺寸的char缓冲区
- 从 char 缓冲区读取 32 位变量
- RapidXML-解析char *上的缓冲区溢出
- 通过HTTP获得C ,忽略Char缓冲区中的逃生字符
- 生成*char缓冲区
- fopen在响应不相关的char缓冲区时崩溃
- 将以null结尾的char数组复制到符合缓冲区长度的std::字符串中
- 使用 libzpaq 压缩 c++ 压缩到 char* 缓冲区
- 在一系列char*缓冲区中查找序列号
- 无法将整数写入缓冲区(char*)内的偏移量