[ C++ ] 문자열 입력받기 | 공백이 포함된 문자열 입력 받기

2021. 3. 16. 10:01·Archive/Develop
728x90
반응형

 

문자열 입력 받기

 

 

 

문자열 배열 변수를 선언해준 뒤, 그 변수에 입력받으면 된다.

cin 은 입력을 받을 수 있게 해주는 함수이다.

 

 

 

#include <iostream>
using namespace std;
int main() {

	cout << "이름을 입력하세요 >>";

	char name[11];
	cin >> name;

	cout << "이름은" << name << "입니다\n";
	
    return 0;

}

 

 

 

 

 

 

그런데 이 때, 입력 받는 문자열에 공백이 포함되면 입력이 끝난 줄 알고

입력이 종료된다.

 

이름에 '버터 해커' 라는 문자열을 넣어보도록 하겠다.

 

 

 

 

 

 

 

 

 

 

공백이 포함된 문자열 입력 받기

 

 

1. getline 이용

 

공백이 낀 문자열을 입력받으려면

 

아래 형식과 같이 getline 을 이용하면 된다.

 

 

 

cin.getline(char buf[], int size, char delimitChar)

 

 

buf에 최대 size-1 개의 문자를 입력한다.

 

delimitChar를 만나면 입력이 중지된다.

 

 

 

예제를 보도록 하겠다.

 

 

#include <iostream>
using namespace std;
int main() {
	
	cout << "주소를 입력하세요 >>";

	char address[100];

	cin.getline(address, 100, '\n');
	cout << "주소는 " << address << " 입니다\n";

	return 0;
}

 

 

 

 

 

 

전에 했던 예제와 위의 예제를 동시에 하려고 하면, 아래와 같은 코드가 된다.

 

 

 

#include <iostream>
using namespace std;
int main() {
	
	char name[11];
	char address[100];

	cout << "이름을 입력하세요 >>";

	cin >> name;
	cin.ignore(10, '\n');
	cout << "이름은 " << name << " 입니다\n";

	cout << "주소를 입력하세요 >>";

	cin.getline(address, 100, '\n');
	cout << "주소는 " << address << " 입니다\n";

	return 0;
}

 

 

cin.ignore(10,'\n')

 

을 해주는 이유는, 버퍼를 지우기 위해서이다.

 

 

 

왜 버퍼를 지우냐면, 우리가 이름을 입력했을 때 마지막으로 친 엔터가 입력 버퍼에 들어가기 때문이다.

 

getline 을 이용할 때, \n 이 입력버퍼에 존재하면 입력을 끊어버리기 때문에, 

 

cin.ignore 를 이용해 버퍼를 지워주지 않으면 주소 입력을 받지 못한다.

 

 

name 변수의 크기가 11이기 때문에, 10 만큼 지우고 마지막으로 '\n' 을 지운다.

 

 

 

 

 

 

 

실행하면 위 그림과 같이 되는 것을 알 수 있다!

 

 

 

2. string 이용

 

 

string 헤더를 이용해서 아래와 같이 코드를 작성할 수도 있다.

 

 

#include <iostream>
#include <string>
using namespace std;

int main() {
	string s1, s2;
	cout << "문자열입력(공백 미포함) : ";
	cin >> s1;
	cout << s1 << endl;
	cin.ignore(100, '\n');
	cout << "문자열입력(공백포함) : ";
	getline(cin, s2);
	cout << s2 << endl;

	return 0;
}

 

 

 

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ CodeUp ] Python 기초 100제 | 6085 번 풀이  (0) 2021.03.16
[ C++ ] 산수 연습 게임 & 자음과 모음의 수 구하기 게임  (0) 2021.03.16
[ CodeUp ] Python 기초 100제 | 6084 번 풀이  (0) 2021.03.16
[ CodeUp ] Python 기초 100제 | 6083 번 풀이  (0) 2021.03.16
[ CodeUp ] Python 기초 100제 | 6082 번 풀이  (0) 2021.03.16
'Archive/Develop' 카테고리의 다른 글
  • [ CodeUp ] Python 기초 100제 | 6085 번 풀이
  • [ C++ ] 산수 연습 게임 & 자음과 모음의 수 구하기 게임
  • [ CodeUp ] Python 기초 100제 | 6084 번 풀이
  • [ CodeUp ] Python 기초 100제 | 6083 번 풀이
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    oracle db
    docker
    코드업 기초
    장고
    Django
    자바스크립트
    보안뉴스
    파이썬 문제
    자바스크립트 객체
    Python
    파이썬 기초 문제
    javascript
    오라클
    코드업
    Oracle
    Git
    백준 풀이
    카카오 100일 프로젝트
    C++
    자바스크립트 API
    파이썬 백준
    파이썬 알고리즘
    백준
    코드업 파이썬 기초 100제
    백준 파이썬
    백준 문제풀이
    파이썬 기초
    파이썬
    비박스
    Codeup
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ C++ ] 문자열 입력받기 | 공백이 포함된 문자열 입력 받기
상단으로

티스토리툴바