将 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>
我正在使用套接字,但在编译我的程序时出现一些错误。
这是我的代码:
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>