C, C++/공부정리

scanf와 std::cin

짱짱이_ 2023. 10. 24. 22:34

scanf와 std::cin은 입력에 사용된다.

 

scanf (C)

#include <stdio.h>  // C++ 의 경우 <cstdio>
int scanf(const char* format, ...);
  • 값을 읽을 때 변수의 주소를 받아야 한다. 
  • 탭, 스페이스바, Enter 키의 입력을 구분자로 이용한다.
  • % 를 통해 다양한 타입을 입력받을 수 있다.

C 언어 레퍼런스 - scanf 함수 (modoocode.com)

 

  • scanf 함수는 문자열을 입력받을 때 널 문자를 붙여주지 않기 때문에 문자열의 끝을 알 수 없으며 오버플로우가 일어날 수 있다. 이를 위해 fgets 함수를 이용하거나 폭을 지정해준다. (ex. char str[10])

  • std::string을 입력받을 수 없다. std::string은 C++ 표준 라이브러리 타입이기 때문에 C 스타일의 문자열 입력 방식인 scanf를 사용할 수 없다.

 


std::cin (C++)

  • 헤더파일 : <iostream>
    기본 모양: std::cin >> [입력 받는 변수];

  • 데이터 타입에 따라 자동으로 형변환이 일어난다. scanf 처럼 %d 등 타입을 지정해주지 않아도 된다.
  • 탭, 스페이스바, Enter 키의 입력을 구분자로 이용한다.
  • char형 문자를 입력받을 때 입력한 문자에 해당하는 ASCII 코드 값이 저장된다. 

#include <iostream>

int main()
{
    char c;
    std::cin >> c;  // char형 변수에 A를 입력하면
    std::cout << int(c) << std::endl;  // 65가 출력된다.  
    
    return 0;
}