Мне нужно создать буфер, который содержит 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());