cout
프로그램에 무언가를 출력하기 위한 함수이다.
C++의 스트림 유형의 객체 출력하려는 값의 자료형을 컴파일러가 검사할 수 있다.
출력하려는 값의 형에 따라 적절한 함수를 호출한다.
모양
cout << "C++";
객체 삽입연산자 문자열
- << : 구문이 그 문자열을 cout에 전달한다는 뜻 / 방향이 정보의 흐름을 상징
- cout : 문자열(string), 수(number), 문자(character) 들을 포함한 여러 가지 다양한 정보들을 출력하는 방법을 알고있는, 미리 정의 된 객체
cout header
cout을 사용하려면 iostream을 include 해야 한다.
1
|
#include <iostream>
|
cs |
cout 예제
1
2
3
4
5
6
7
8
|
#include <iostream>
int main()
{
std::cout << "Hello C++" << std::endl;
return 0;
}
|
cs |
✅코드 설명✅
➡️ 1 Line cout은 iosream을 include해줘야한다.
➡️ 5 Line std::는 표준 라이브러리에 있는 변수와 함수를 사용하게위해 붙여야 하는 네임스페이스이다. (네임스페이스에 속한 cout이다 라고 볼 수 있음), endl은 조정자(manipulator)이며, 화면 커서가 다음 행의 시작위치로 가는 개행이다.
⚠️만약 std::를 붙이는게 귀찮다면, 코드 윗 부분에 using namespace std;라고 선언해 주면 된다⚠️
cin
프로그램에 무언가를 입력하기 위한 함수이다.
입력받은 값을 저장할 변수를 >> (변수) 의 형태로 작성한다.
입력받을 값이 한 줄에 여러 개인 경우에 주로 공백으로 값을 구분한다.
cin을 이용하여 여러 개의 값을 받을 경우 공백이 무시된다.
⚠️줄바꿈 기능인 endl을 사용하면 안 된다⚠️
모양
cin >> 변수
객체 삽입연산자
cin header
cin을 사용하려면 iostream을 include 해야 한다.
1
|
#include <iostream>
|
cs |
cin 예제
[입력 값]
Hello
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
using namespace std;
int main()
{
string a; // 문자열을 저장 할 a 변수 생성
cin >> a; // a 변수에 입력
cout << a << endl; // 입력한 문자열 출력
return 0;
}
|
cs |
✅코드 설명✅
➡️ 1 Line cout은 iosream을 include해줘야한다.
➡️ 2 Line using namespace std; 를 선언 해 주어서 cin과 cout, endl 부분에 std::를 붙이지 않아도 된다.
➡️ 8 Line 내가 원하는 문자열을 입력하면,
➡️ 10Line 그 문자열이 출력된다.
printf
1
2
|
int printf("출력할 데이터와 그 서식", 변수 1, 변수 2... );
int printf(const char* format, ... );
|
cs |
첫 번째 인자로 들어온 데이터들을 표준 출력(stdout)에 출력하는 함수이다.
두 번째 인자부터는 첫 번째 인자의 서식 문자의 개수와 종류에 따라서 변수가 들어오게 된다.
printf header
printf를 사용하려면 <studio.h> 를 include 해야 한다.
1
|
#include <stdio.h>
|
cs |
printf 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
int main()
{
char a = 'a';
char str[10] = "Hello C++";
char* pStr = str;
int num1 = 1;
int num2 = -2;
printf("a 문자 출력 : %c\n", a);
printf("str 문자열 출력 : %s\n", str);
printf("num1, 10진수 정수 출력 : %d\n", num1);
printf("num2, 10진수 정수 출력 : %d\n", num2);
printf("pStr 주소값 출력 : %p\n", pStr);
printf("str 주소값 출력 : %p\n", str);
printf("기호 출력 : %%\n");
return 0;
}
|
cs |
✅코드 설명✅
➡️ 7 Line char형을 저장하는 포인터 pStr 변수를 생성하여 str의 주소를 담는다.
scanf
C언어의 표준 입력 함수로, 사용자로부터 다양한 데이터를 다양한 서식에 맞춰 입력받을 수 있게 해준다.
1
2
|
int scanf("입력받을 문자의 서식", 변수의 주소... )
int scanf(const char* format, ....)
|
cs |
scanf() 함수의 f는 formatted의 약자이며, 서식화된 입력을 받는다는 의미이다. 이 함수는 입력받은 데이터를 어떤 서식으로 변환할지 서식 지정자(format specifier)를 통해 직접 지정할 수 있다.
첫 번째 매개변수의 형식에 맞게 데이터를 입력받는데, 그 데이터 들은 두 번째 세 번째.. N번째 매개변수로 들어온 변수에 저장을 한다.
scanf header
scanf를 사용하려면 <studio.h> 를 include 해야 한다.
1
|
#include <stdio.h>
|
cs |
scanf 예제
[입력 값]
1, 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
int main(void)
{
int num1, num2;
printf("첫 번째 정수를 입력하세요 : ");
scanf_s("%d", &num1);
printf("두 번째 정수를 입력하세요 : ");
scanf_s("%d", &num2);
printf("입력하신 두 정수의 합은 %d입니다.\n", num1 + num2);
return 0;
}
|
cs |
✅코드 설명✅
➡️ 8 Line
scanf가 아닌 scanf_s를 써야하는 이유 : 오버플로우 공격을 방지 (또한 visual studio에서는 _s를 붙이지 않으면 오류가 나기 때문에 꼭 붙여야 한다)
변수 앞의 &를 붙이는 이유 : 변수에 값을 집어넣으려면, 그 변수의 주소가 필요하기 때문이다. (포인터를 이해하면 쉽게 알 수 있다.) 📝포인터 참고
cout 과 printf의 차이
cout
- 출력하려는 값의 자료 형(type)을 컴파일러가 검사할 수 있음
- printf에 비해 처리 속도가 느림 (cin/cout/endl이 scanf/printf/\n보다 속도가 느리다고 보면 됨)
printf
- 출력하려는 값의 자료 형(type)을 컴파일러가 검사할 수 없음 -> 버그가 발생할 확률이⬆️
- cout에 비해 처리 속도가 빠름
출처 및 참고 : TCPschool
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)