다음 템플릿 코드를 먼저 살펴보자. 앞으로 C++로 코딩을 할 때는 웬만하면 여기서부터 시작 할 것이다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cout << "Hello, PS!" << endl;
}
ios::sync_with_stdio(false);는 입출력 속도를 매우 빠르게 올려준다. 자세한 원리는 다른 블로그들을 참고하자.
그리고 2번째줄에서 using namespace std;를 써줬기때문에 이후 코드에서 그냥 cin, cout만 써줘도 된다.
그렇다. C++에서 입출력을 받을 때는 cin과 cout을 쓴다!
1. cout으로 출력하기
출력을 하는 방법은 간단하다.
cout << 출력할 거;
이렇게 해주면 출력할 거가 출력이 된다.
다만, 파이썬과 달리 개행은 따로 되지가 않아서 개행문자 "\n"을 따로 넣어줘야 한다.
만약 개행문자를 넣기 싫다면 다음과 같이 하면 된다.
cout << 출력할 거 << endl;
다음 코드의 출력은 어떻게 될까?
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cout << "one";
cout << "two";
}
개행 문자가 없으므로 그냥 onetwo 이렇게 될 것이다.
다만 다음과 같이 개행 문자를 넣거나 endl;을 해주면
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cout << "one" << endl;
cout << "two" << endl;
}
one
two
와 같이 줄바꿈이 된다.
공백으로 구분하여 출력하는 유형
파이썬에서는 print문 안에 쉼표를 이용해서 여러 변수를 한 번에 출력하려 하면 자동으로 띄어쓰기로 구분되어 나온다.
다만, C++에서는 직접 띄어쓰기를 출력해주어야 한다.
아래와 같은 방식이다. 이 코드는 N을 입력받고 1부터 N까지 한 줄에 공백을 기준으로 출력하는 예제이다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
for (int i = 1; i<= N; i++) {
cout << i;
if (i != N) cout << ' ';
}
cout << '\n';
}
반복문 및 조건문, 여러 연산자들은 추후에 공부해볼 예정이다.
2. cin으로 입력받기
cin은 cout와 반대로, >>를 이용한다.
파이썬에서는 입력을 받을 때 스페이스바로 한 줄에서 구분되어서 오느냐, 개행 문자로 구분되어오느냐 모두 따로따로 관리해주어야 한다.
그런데 C++에서 cin은 그냥 '공백 문자'를 기준으로 한다. 즉, 개행 문자와 스페이스바를 구분하지 않는다.
그래서 예를 들어 정수 3, 4를 입력받아 변수에 저장한다고 하자.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int a, b;
cin >> a >> b;
cout << a << " " << b;
}
그러면 입력을
3 4
또는
3
4
로 하든 상관없이 둘 다 3, 4가 입력된다.
공백으로 구분되지 않는 입력 유형
가령 다음과 같은 예시이다.
12345678과 같은 문자열이 입력으로 주어지고, 각각의 글자를 배열에 저장해야 한다고 하자.
그러면 이렇게 할 수 있다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
char chArr[10]; // 문자 그대로 저장
int numArr[10]; // 정수로 저장
string s;
cin >> s;
int len = 0;
for (char c : s) {
chArr[len] = c;
numArr[len] = c - '0'; //이렇게 하면 정수로 바뀌나봄
len++;
}
cout << "chArr : ";
for (int i = 0; i < len; i++) cout << chArr[i] << ' ';
cout << "\nnumArr: ";
for (int i = 0; i < len; i++) cout << numArr[i] << ' ';
cout << '\n';
}
공백까지 포함하는 문자열을 한번에 읽을 때 (25.7.23)
https://www.acmicpc.net/problem/2037
ABBAS SALAM과 같이 공백을 포함하는 문자열을 한 번에 읽어야 할 때는 다음과 같이 한다.
int p, w; cin >> p >> w;
cin.ignore();
string s; getline(cin, s);
2번째 줄의 cin.ignore()은 위에서 p, w를 받고 나서 그 뒤에 오는 개행 문자를 무시하겠다는 뜻이다.
'C++ 같이 배워요' 카테고리의 다른 글
| [C++] Day 5 - 자료 구조(1) - 배열과 벡터, 튜플 (2) | 2025.07.10 |
|---|---|
| [C++] Day 4 - 조건문 및 반복문 (0) | 2025.07.09 |
| [C++] Day 3 - 자료형 및 연산자 (0) | 2025.07.09 |
| [C++] Day 1 - PS를 위한 Visual Studio Code 세팅하기(Mac을 위한) (0) | 2025.05.21 |
| [C++] Day 0 - 왜 C++인가? (0) | 2025.05.12 |