728x90
반응형
간혹 간단한 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
'프로그래밍 > C++' 카테고리의 다른 글
[C/C++]파일입출력, 간단한 txt파일을 파싱하기. (0) | 2021.03.21 |
---|---|
[로또프로그램] 코딩 연습용 로또 프로그램 제작 (0) | 2020.12.31 |