如何将std :: string转换为in_port_t

时间:2015-06-16 20:46:11

标签: c++

假设我有这段代码:

#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

2 个答案:

答案 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;