假设我有这段代码:
#include <netinet/in.h>
void bark(in_port_t port){
// etc.
}
int main() {
const std::string var = "203";
in_port_t p = var;
bark(p);
return 0;
}
如何将std :: string转换为in_port_t?
答案 0 :(得分:5)
从您documentation链接(强调我的)
in_port_t
无符号整数类型正好16位。
由于in_port_t
是无符号的,std::string
可以作为无符号整数传递给函数。
您将其转换为与in_port_t
匹配的数字(例如,使用std::stoi()
函数并对数字小于/等于std::numeric_limits::max<uint16_t>()
进行健全性检查),然后将它们转换为网络字节订单形状(例如使用htons()
)。
答案 1 :(得分:1)
他们说in_port_t是一个完整的16位类型。所以你应该只使用stoi()和你的字符串。你也可以使用stringstream作为puprose。
string str="10003";
stringstream ss;
ss<<str;
unsigned short target;
ss>>target;