Использование 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);
}
}

1

Решение

Использовать size() или же length() члены, чтобы получить длину строки, и data() получить указатель на данные:

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

Если вы застряли с реализацией до 2011 года, то data() не будет существовать, поэтому используйте c_str() вместо.

3

Другие решения

*it имеет тип std::string который не превращается автоматически в void* буфер данных. Однако вы можете конвертировать std::string в строку в стиле c char* с использованием c_str() метод.

Вот пример:

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

По вопросам рекламы [email protected]