1

我当前的代码不起作用我找不到发送stringwithsendto()或将 basic 转换string为 achar*以便它工作的方法。谢谢。这是我当前的代码:

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);
    }
}
4

2 回答 2

3

使用size()orlength()成员获取字符串的长度,并data()获取指向数据的指针:

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

如果您坚持使用 2011 年之前的实施,那么data()将不存在,因此请c_str()改用。

于 2013-10-23T08:01:12.117 回答
0

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

这是一个例子:

sendto(sockfd, (*it).c_str(), strlen((*it).c_str()), ...)
于 2013-10-23T08:02:08.963 回答