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。