ABOUT ME

-

  • 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을 포함한 문자열의 최대크기를 받기 때문에 오버플로우 문제를 해결할 수 있습니다.
    •  함수가 리턴되도 모든 문자열이 입력되지 않았을 수 있다고 합니다.

     

    4) getline()으로 입력 받기.

    • 문자열 크기의 제한이 없고, 공백문자 또한 포함하여 입력받을 수 있습니다. 문자열 입력 받기에 가장 괜찮은 함수인 듯 합니다.

    반응형

    'C++' 카테고리의 다른 글

    C++) endl 함수에 대해 알아보기  (0) 2020.11.27
    C++) 입력함수 cin, cin.get(), getline() 차이점 비교  (0) 2020.11.27

    댓글

Designed by Me.