C/C++ 기초 - cin과 setw()


C/C++ 기초 - cin과 setw()

inputTxt라는 변수에 5글자를 할당하고자 char 포인터(배열)를 선언했다. 이후 cin을 통해 글자를 입력받는데 5글자가 넘어가도 정상적으로 출력이 되어 버린다. 그 이유는 char 배열의 경우 마지막을 null 값으로 구분하는데 null 값이 없으니 할당된 메모리를 넘어서 값이 들어간 것이다. 때문에 space 값이 나온 이전의 문자만 변수에 담긴다. 문제는 나는 5글자만 입력받길 기대하고 만든 건데 이렇게 돼버리면 프로그램 중에 다른 메모리를 덮어쓰는 문제가 생긴다. 이를 방지하기 위해 iomanip 헤더 파일 안에는 setw()라는 함수를 제공하는데 단순하게 말하면 5개의 메모리 값만 변수에 할당하겠다는 것이다. 그런데 여기서 5개의 메모리를 넣었으니 5글자가 출력되길 기대했지만 실행해 보면 4글자만 나온다. 이건 아까 위에서 말한 대로 마지막 글자가 null로 배열의 마지막을 구분하기 때문이다. 따라서 5개의 메모리만 변수에 할당된 것이 맞고, 마지막 4개의 문자와 1...



원문링크 : C/C++ 기초 - cin과 setw()