C++ inet_addr函数和前导零
我试图使用C++ inet_addr函数和前导零,c++,network-protocols,C++,Network Protocols,我试图使用inet\u addr函数来转换char IP地址,但我认为由于我传递给'inet\u addr'函数的IP地址的前导是零(192.169.055.075),因此'inet\u addr'函数的解释是不同的。有没有关于如何删除前导零的建议 谢谢 char IPAddr[20]; //192.169.055.075 ulAddr = inet_addr(IPAddr); 您可以改用inet\u pton(3)——它不会将前导零解释为八进制前缀。如何: string addr("192.
inet\u addr
函数来转换char IP地址,但我认为由于我传递给'inet\u addr'函数的IP地址的前导是零(192.169.055.075)
,因此'inet\u addr'函数的解释是不同的。有没有关于如何删除前导零的建议
谢谢
char IPAddr[20]; //192.169.055.075
ulAddr = inet_addr(IPAddr);
您可以改用
inet\u pton(3)
——它不会将前导零解释为八进制前缀。如何:
string addr("192.168.055.075");
replace( addr.begin(), addr.end(), '.', ' ' );
istringstream iss(addr);
int a,b,c,d;
iss >> a >> b >> c >> d;
ostringstream oss;
oss << a << '.' << b << '.' << c << '.' << d;
string addrWithoutLeadingZeros( oss.str() );
字符串地址(“192.168.055.075”);
替换(addr.begin()、addr.end();
istringstream iss(地址);
INTA、b、c、d;
iss>>a>>b>>c>>d;
ostringstream oss;
oss inet_addr()将前导零的八位字节解释为八进制。弗雷德:你应该把它推广到一个真实的答案:)@Doug,我认为它并没有真正回答这个问题,因为它没有说要做什么。谢谢你……这里还有另一个解决我问题的方法。int a[4];charc[20];如果(sscanf(192.169.055.075),%03d.%03d.%03d.%03d),a,a+1,a+2,a+3)==4{sprintf(c,,%d.%d.%d.%d,a[0],a[1],a[2],a[3]);]