Как использовать Socket Recv в сочетании с Std :: Vector Post C ++ 23?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Socket Recv в сочетании с Std :: Vector Post C ++ 23?

Сообщение Anonymous »

Раньше был метод для чтения данных из сокета и хранения полученных данных в std :: vector .
Один такой пример можно найти здесь. < /p>
Для удобства вот копия почти идентичного кода. < /p>

Код: Выделить всё

const size_t recv_buffer_length = 128;

std::vector recv_buffer;
recv_buffer.reserve(recv_buffer_length);

const auto byte_count = recv(peer_fd, recv_buffer.data(), recv_buffer_length, 0);
recv_buffer.resize(byte_count);

// does not print anything. `.size() > 0`, but each element is `\0`
for(const auto i: std::views::iota(0, byte_count))
{
std::print("{}", recv_buffer[i]);
}
Это больше не работает в C ++ 23. Причина в том, что Resisize использует значение по умолчанию для инициализации элементов std :: vector .
есть решение для этого? Предпочтительно тот, который избегает необходимости возвращаться к необходимости отслеживать указатель и переменную длины.

Подробнее здесь: https://stackoverflow.com/questions/794 ... r-post-c23
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»