создание * символьного буфера

Мне нужно создать буфер, который содержит 300 символов и передать его функции, описанной ниже:

void printThis(char *info);

Каков наилучший способ создания этого буфера?

Если это хорошо:

char *buffer = new char()

тогда, как добавить символы в этот буфер? Следующий метод не годится и вызывает нарушение прав доступа:

for (int i=0; i<300;i++)
{
sprintf(s,"%s",'a');
}

0

Решение

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;
4

Другие решения

если это хорошо

Это не так. Это действительно так. Это даже не буфер. И это даже близко к хорошей идее.

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());
0

По вопросам рекламы [email protected]