std::string str(buffer, buffer + length);
Или, если строка уже существует:
str.assign(buffer, buffer + length);
Редактировать: Я все еще не совсем уверен, что понимаю вопрос.Но если это что-то вроде того, что предлагает JoshG, вам нужно до length
символов или до нулевого терминатора, в зависимости от того, что произойдет раньше, тогда вы можете использовать это:
std::string str(buffer, std::find(buffer, buffer + length, '\0'));