[ 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 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바