300x250
반응형

간혹 간단한 socket 테스트 할 경우 문자열을 snprint가 아닌 직접 입력하여 보낼 때 공백이 들어가면 해당 공백은 포함 안되고 전체 문자열이 붙혀서 넘어 가는 경우가 발생 할 수 있다.

 

C++를 공부 하면서  C++기준으로. 우리가 입력을 할 때는 cin으로 처리를 하는 cin은 space가 들어가면 해당 문자열을 종료 시킨다고 판단하여 공백이 제거 되버린다.

 

그럴 때 cin.getline(a,10);으로 해주면 공백이 포함 된다.

 

간단한 예제

 

1. cin을 할 경우 

char sbuf[1024];

cin >> sbuf; 했을 경우. 위에 처럼 보내고. 받는 곳에서는 다음과 같은 결과가 나온다.

위의 처럼 결과가 나오는데 입력시 my test라고 공백이 포함되게 보냈지만, 이미 공백이 들어가서 해당 첫 라인은 끝난다고 가정하여 mytest라고 보내게 된 경우다.

 

2. cin.getline() 을 할경우

 

char sbuf[1024];

cin.getline(sbuf, 1024);

 

위 코드로 처리 할 경우 위의 결과 값으로 나온다.

공백도 문자열로 처리가 된다.

728x90

+ Recent posts