Мой текущий код не работает, я не могу найти способ отправить 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);
}
}
Использовать size()
или же length()
члены, чтобы получить длину строки, и data()
получить указатель на данные:
sendto(sockfd, it->data(), it->size(), ...);
Если вы застряли с реализацией до 2011 года, то data()
не будет существовать, поэтому используйте c_str()
вместо.
*it
имеет тип std::string
который не превращается автоматически в void*
буфер данных. Однако вы можете конвертировать std::string
в строку в стиле c char*
с использованием c_str()
метод.
Вот пример:
sendto(sockfd, (*it).c_str(), strlen((*it).c_str()), ...)