C++
-
C++) string 문자열 scanf를 이용해 입력 받는 방법C++ 2020. 12. 8. 20:57
scanf를 이용해 아래처럼 문자열을 입력 받으려고 했으나 실패했습니다. 검색해보니 string은 cin 으로 입력 받을 수 있으나, scanf로는 입력 받을 수 없다고 하네요. 그럼 scanf로 문자열을 입력 받는 방법은 없는걸까? 1) char 배열로 만들어서 입력받기. 하지만 scanf는 공백이 나타나면 멈추기 때문에 아래와 같이 test가 짤리게 됩니다. 2) gets로 입력 받기. 공백문자를 포함해 엔터를 입력하기 전까지 모두 입력받습니다. 하지만 저런 warning이 발생합니다. gets()는 라인 입력의 끝을 확인하지 않아 오버플로우가 발생해 비추한다고 합니다. 3) fgets()로 입력 받기. \0을 포함한 문자열의 최대크기를 받기 때문에 오버플로우 문제를 해결할 수 있습니다. 함수가 리턴..
-
C++) 입력함수 cin, cin.get(), getline() 차이점 비교C++ 2020. 11. 27. 14:42
C++의 입력 함수를 찾다가 어떤 블로그에서 cin은 문자, 문자열 모두 입력 가능, cin.get은 문자만, getline은 문자열만 가능하다는 글을 보고, 아 그럼 cin으로 모두 받으면 되겠네 하고 cin으로 입력을 받으니 문자열 알고리즘에서 틀리게 되어 자세히 검색을 해봤습니다. cin 문자, 문자열 모두 입력 받을 수 있습니다. 공백이나 개행 입력 시 공백 이전까지의 값만 결과로 받아들입니다. cin.get() 문자 하나만 입력이 가능하며 공백과 개행도 입력으로 포함합니다. getline() 문자열을 입력 받습니다. 공백이나 개행도 입력으로 포함합니다. 결론 - 문자열의 공백 여부에 따라 적절히 사용해야겠습니다.