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 |