2013-10-23 30 views
1

我目前的代码不起作用我找不到方法发送stringsendto()或将基本string转换为char*,以便它可以工作。谢谢。这里是我当前的代码:C++ - 使用sendto()与基本字符串

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

回答

3

使用size()length()成员得到一个字符串的长度,并data()得到的指针数据:

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

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

0

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

下面是一个例子:

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

虽然你不想使用'strlen'当长度在固定时间内可用。 –