기본 표준 입출력 (<iostream>)
콘솔(터미널)을 통해 데이터를 입출력할 때 사용합니다.
- cin: 키보드로부터 데이터를 입력받습니다. 공백이나 줄바꿈을 기준으로 끊어서 읽습니다.
-
C++
int age; string name; cin >> name >> age; - cout: 화면에 데이터를 출력합니다.
-
C++
-
cout << "Hello, " << name << "!\n"; - getline(): 공백을 포함한 한 줄 전체를 입력받고 싶을 때 사용합니다.
-
C++
string address; getline(cin, address);getline 앞에 공백이 있을때 해결 방법.
해결책 1: cin.ignore() (가장 표준적인 방법)
cin으로 숫자나 단어를 입력받은 직후, 버퍼에 남아있는 엔터(\n) 문자를 강제로 읽어서 없애버리는 것입니다.
- 잘못된 코드:
-
C++
int n; cin >> n; // 사용자가 5를 누르고 [Enter]를 침 // -> '5'는 n으로 가고, '\n'은 버퍼에 남음 string s; getline(cin, s); // '\n'을 만나자마자 "빈 줄"을 읽고 종료됨 - 수정된 코드:
-
C++
int n; cin >> n; cin.ignore(); // 버퍼에 남아있는 '\n'을 무시하고 삭제함 string s; getline(cin, s); // 이제 정상적으로 다음 줄을 기다림
해결책 2: cin >> ws (더 깔끔한 방법)
C++에는 ws라는 "공백 문자 제거(whitespace manipulator)" 기능이 있습니다. getline이 입력을 받기 직전에 cin >> ws를 먼저 실행시켜서, 버퍼에 남아있는 모든 공백(스페이스, 탭, 엔터 등)을 무시하고 다음 실제 문자가 나올 때까지 기다리게 만듭니다.
C++int n; cin >> n; string s; // cin에서 ws(모든 공백)를 먼저 처리하고, 그 다음 getline을 실행 getline(cin >> ws, s); cout << s; // 정상적으로 다음 줄이 입력됨cin.ignore()는 정확히 \n 하나만 지우는 반면, cin >> ws는 남아있는 모든 종류의 공백을 다 지워주기 때문에 좀 더 강력하고 깔끔한 방법입니다.
파일 입출력 (<fstream>)
파일을 읽고 쓸 때 사용하는 기능입니다.
- ifstream: 파일의 내용을 읽어올 때 사용합니다.
-
#include <fstream> #include <string> ifstream inputFile("data.txt"); // 읽기용으로 파일 열기 string line; while (getline(inputFile, line)) { // 파일 내용 한 줄씩 처리 } - C++
- ofstream: 파일에 내용을 쓸 때 사용합니다.
-
C++
#include <fstream> #include <string> ofstream outputFile("result.txt"); // 쓰기용으로 파일 열기 outputFile << "This will be written to the file.\n";
문자열 스트림 (<sstream>)
문자열을 파일처럼 다루어 입출력을 할 수 있게 해주는 기능입니다. 문자열을 파싱하거나 특정 형식으로 만들 때 유용합니다.
- stringstream: 문자열로부터 데이터를 읽거나 문자열에 데이터를 쓸 때 모두 사용합니다.
-
C++
#include <sstream> #include <string> #include <vector> string data = "Alice 30 95.5"; stringstream ss(data); string name; int age; double score; ss >> name >> age >> score; // 문자열에서 변수로 데이터 추출
입출력 속도 향상 (주로 코딩 테스트용)
cin과 cout의 속도를 향상시키기 위해 사용합니다.
C++
// main 함수 시작 부분에 추가
ios_base::sync_with_stdio(false);
cin.tie(NULL);
- ios_base::sync_with_stdio(false): C++와 C의 표준 스트림 동기화를 끊어 속도를 향상시킵니다.
- cin.tie(NULL): cin과 cout의 묶음을 풀어 입출력 속도를 높입니다.
'개발 공부 > 코딩 공부' 카테고리의 다른 글
| 최대 공약수, 최소 공배수 (0) | 2026.04.02 |
|---|---|
| C++ 람다식 (0) | 2025.09.16 |
| 프로그래머스 리스트 자르기 (0) | 2025.09.13 |
| c++ <limits>, const &auto (0) | 2025.09.03 |
| 복사와 함수 인자 전달 , 그리고 메모리 (0) | 2025.09.03 |