C++ C++;-将sendto()与基本字符串一起使用

C++ C++;-将sendto()与基本字符串一起使用,c++,sendto,C++,Sendto,我当前的代码不工作我找不到方法用sendto()发送string,或将基本字符串转换为char*,使其工作。谢谢这是我目前的代码: for (vector<string>::iterator it=lines.begin(); it!=lines.end(); ++it){ if (int bytes = sendto(sockfd, *it, strlen(*it), 0, (struct sockaddr*)&server, svrlen) == -1){

我当前的代码不工作我找不到方法用
sendto()
发送
string
,或将基本
字符串
转换为
char*
,使其工作。谢谢这是我目前的代码:

for (vector<string>::iterator it=lines.begin(); it!=lines.end(); ++it){
    if (int bytes = sendto(sockfd, *it, strlen(*it), 0, (struct sockaddr*)&server, svrlen) == -1){
        printf("Send error.");
        exit(1);
    }
}
for(vector::iterator it=lines.begin();it!=lines.end();++it){
if(int bytes=sendto(sockfd,*it,strlen(*it),0,(struct sockaddr*)和server,svrlen)=-1){
printf(“发送错误”);
出口(1);
}
}
使用
size()
length()
成员获取字符串的长度,使用
data()
获取指向数据的指针:

sendto(sockfd, it->data(), it->size(), ...);

如果您使用的是2011年之前的实现,那么
data()
将不存在,因此请使用
c_str()

*它的类型为
std::string
,不能自动转换为
void*
数据缓冲区。但是,您可以使用
c_str()
方法将
std::string
转换为c样式字符串
char*

以下是一个例子:

sendto(sockfd, (*it).c_str(), strlen((*it).c_str()), ...)

虽然当长度在固定时间内可用时,您不希望使用strlen。