Как записать строки и целые числа в кольцевом буфере?

Как записать строки и целые числа в кольцевом буфере? Я хотел бы написать несколько строк и целых чисел в кольцевой буфер, но мои знания C ++ ограничены. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Я ценю любую помощь, которую вы можете оказать.

Вот целочисленные и строковые переменные, которые я хочу записать, и функция записи кольцевого буфера:

string payload;
int byte_pos;

size_t ringbuffer::write(u_char *data, size_t bytes)
{
if (bytes == 0) return 0;

size_t capacity = capacity_;
size_t bytes_to_write = std::min(bytes, capacity - size_);

// Write in a single step
if (bytes_to_write <= capacity - end_index_)
{
memcpy(data_ + end_index_, data, bytes_to_write);
end_index_ += bytes_to_write;
if (end_index_ == capacity) end_index_ = 0;
}
// Write in two steps
else
{
size_t size_1 = capacity - end_index_;
memcpy(data_ + end_index_, data, size_1);
size_t size_2 = bytes_to_write - size_1;
memcpy(data_, data + size_1, size_2);
end_index_ = size_2;
}

size_ += bytes_to_write;
return bytes_to_write;
}

0

Решение

Вы должны конвертировать ваши std::string переменная в C-стиле указатель на char:

string payload;
char* cpayload = payload.c_str();
int len = strlen(cpayload);
ringbuffer::write(cpayload, len*sizeof(char));
0

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

Это то, что, кажется, работает, но я еще не проверил, что именно я получаю в кольцевом буфере, хотя ошибок нет.

ringbuffer::write((u_char*) payload.c_str(), payload.length());
ringbuffer::write((u_char*) &byte_pos, sizeof(byte_pos));
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector