我当前的代码不起作用我找不到用string
发送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);
}
}
答案 0 :(得分:3)
使用size()
或length()
成员获取字符串的长度,使用data()
获取指向数据的指针:
sendto(sockfd, it->data(), it->size(), ...);
如果您遇到2011年之前的实施,那么data()
将不存在,因此请改用c_str()
。
答案 1 :(得分:0)
*it
的类型std::string
无法自动转换为void*
数据缓冲区。但是,您可以使用std::string
方法将char*
转换为c风格的字符串c_str()
。
以下是一个例子:
sendto(sockfd, (*it).c_str(), strlen((*it).c_str()), ...)