我需要创建一个包含300个符号的缓冲区并将其传递给下面描述的函数:
void printThis(char *info);
生成此缓冲区的最佳方法是什么?
如果这很好:
char *buffer = new char()
然后,如何在此缓冲区中添加字符?以下方法不好,并引发访问冲突:
for (int i=0; i<300;i++)
{
sprintf(s,"%s",'a');
}
答案 0 :(得分:4)
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;
答案 1 :(得分:0)
如果这很好:
不是。它真的,真的,不是。它甚至都不是缓冲区。这也不是一个好主意。
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());