2012-05-17 4 views
2

stringstream에서 데이터를 읽을 때 ntohs()을 사용하는 방법에 대한 질문이 있습니다.문자열 스트림에 ntohs() 사용

다음 코드를

:

read(ns, buf_receive, BUFFER_SIZE); 

stringstreams ss(buf_receive); 
char[2] a; 
short int b; 

ss << a[0] << a[1]; 
ss << b; 

cout >> b; 

내 문제는 받았다 내 데이터 형식은 순수 short 아니라고에게 있습니다. 그래서 나는이 함수를 buf_receive에 직접 넣을 수 없다. 예를 들어 ntohs(buf_receive)이나 b에 쓸 수있는 것은 다음과 같다 : ntohs(b).

이렇게 구현하려면 좋은 방법이 있습니까 (수동으로 비트를 이동하지 않고)?

+1

잘못된 사이트입니다. 스택 오버플로에 속합니다. –

+0

이렇게 많은 사람들이 읽고 있습니다. 더 좋은 대답을 얻을 수 있습니다. –

답변

1

당신은 항상하는 short를 포함하는 클래스를 생성 한 후 읽기/각각 ntohshtons를 호출하여 바이트 순서를 처리하는 스트림에서 값을 작성하는 사용자 정의 operator>>operator<<을 정의 할 수 있습니다.

그런 다음 예에서 short의 사용을 새 클래스 유형으로 바꿉니다.

숙제로서, 구현을 제공하지 않겠습니다.

관련 문제