C ++ - 使用带有基本字符串的sendto()

时间:2013-10-23 07:57:20

标签: c++ sendto

我当前的代码不起作用我找不到用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);
    }
}

2 个答案:

答案 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()), ...)