개발 라이브러리 & 툴

boost asio address from_string 사용시 주의할 점

하늘흐늘 2021. 10. 25. 15:42
반응형

아래와 같은 코드와 결과를 확인해 보자

string ip = "169.254.0.0";

ip::address addr;

addr.from_string(ip);
cout << addr.to_string() << endl;

addr = addr.from_string(ip);
cout << addr.to_string() << endl;

addr = ip::address_v4::from_string(ip);
cout << addr.to_string() << endl;

결과는 아래와 같다. 

0.0.0.0
169.254.0.0
169.254.0.0

그냥 쉽게 생각하기에 addr.from_string(ip)하면 addr에 ip주소가 설정될 거 같은데 그렇지 않다. 

이유는 우선 해당 함수의 정의가 다음과 같기 때문이다.

static address from_string(const char* str);


위에서 보듯 static 함수인 관계로 addr 객체에 주소를 설정하는 함수가 아니다. 그리고 함수 정의에서 보듯 address를 리턴하는 함수이다. 그러므로 address 객체의 ip를 string에서 부터 설정하기 위해서는 예제와 같이 from_string 함수의 리턴 값으로 설정해야 한다.

반응형