无法在C++中通过套接字发送ostringstream变量

gdo*_*371 0 c++ sockets winsock

有人可以,请向我解释为什么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);
Run Code Online (Sandbox Code Playgroud)

使用此代码我收到以下错误:

没有从std :: string到const char*的合适转换函数

rav*_*ard 6

因为这个send()函数需要一个const char *参数,而不是一个std::string,这就是.str()给你的东西.

试试这个:

comm_send1 = send(sock, var1.c_str(), msg_len3, 0);
Run Code Online (Sandbox Code Playgroud)

.c_str()成员函数std::string提供您所需要的类型:C风格的字符串.