将 std::string 作为参数传递会产生错误 - htons 函数

Passing std::string as parameter gives error - htons function

我正在使用套接字,但在编译我的程序时出现一些错误。

这是我的代码:

address.sin_family = AF_INET;
address.sin_port = htons(string); // here I get an error
inet_aton(str.c_str(),&address.sin_addr);

我得到的是:

cannot convert ‘__gnu_cxx::__alloc_traits > >::value_type {aka std::__cxx11::basic_string}’ to ‘uint16_t {aka short unsigned int}’ for argument ‘1’ to ‘uint16_t htons(uint16_t)’

如何解决这个错误?

提前致谢。

htons 需要 uint16_t
这意味着您必须将端口作为整数传递,而不是作为字符串

您需要将 std::string 转换为 std::uint16_t。我推荐 stringstream

std::istringstream ss(string); // maybe pick a different name
std::uint16_t port{};
ss >> port;
address.sin_port = htons(port);

一定要#include <sstream>