Невозможно отправить переменную ostringstream через сокет в C ++ - PullRequest
0 голосов
/ 03 июля 2018

Может кто-нибудь объяснить, почему переменная string, полученная мной с помощью ostringstream, не может быть отправлена ​​через сокет?

std::ostringstream oss1;
std::ostringstream oss2;

int code = 52;

oss1 << "4" << "1" << "0" << "0" << "0" << "0" << 224 + code / 16 << code % 16;
oss2 << "4" << "0" << "0" << "0" << "0" << "0" << 224 + code / 16 << code % 16;

int msg_len3 = oss1.tellp;
int msg_len4 = oss2.tellp;

std::string var1 = oss1.str();
std::string var2 = oss2.str();

comm_send1 = send(sock, var1, msg_len3, 0);
comm_send2 = send(sock, var2, msg_len4, 0);

С этим кодом я получаю ошибку:

нет подходящей функции преобразования из std :: string в const char * существует

1 Ответ

0 голосов
/ 03 июля 2018

Поскольку функция send() требует аргумента const char *, а не std::string, что дает вам .str().

Попробуйте вместо этого:

comm_send1 = send(sock, var1.c_str(), msg_len3, 0);

Функция-член .c_str() из std::string дает вам нужный вам тип: строка в стиле C.

...