문자열 입력 받기
2023. 3. 11. 18:44ㆍc++
728x90
cin 은 공백이 입력으로 들어오는 순간 문자열의 끝이라고 판단하여 더 이상의 입력을 받지 않게 된다.
예를 들어 입력으로 Helo World! 치게 되면 Hello와 World 사이의 공백을 문자열의 끝으로 인식하여 Hello 만 입력받게 된다.
따라서 공백이 있는 문자열을 입력 받기 위해서는 다른 방법이 필요하다.
string 헤더파일에 속해 있는 getline 함수를 사용하면 된다.
마지막이 널 문자 \n 인지를 판단하여 문자열을 구분하기 때문에 공백이 포함된 문자열을 입력으로 받을 수 있다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
getline(cin,a);
cout<<a;
return 0;
}
char a;
cin >> a;
string str;
getline(cin,str);
cout << a << endl;
cout << str;
*위의 코드의 문제점
-> cin으로 입력을 받으면 버퍼에 개행문자 \n이 남아있게 된다.
그래서 getline으로 문자열을 입력받으려고 할 때 버퍼에 있던 개행문자가 getline으로 들어가 아무것도 입력을 받지 않고 종료한다.
*해결법
cin.ignore();로 버퍼를 비워줘야한다.
char a;
cin >> a;
cin.ignore();
string str;
getline(cin,str);
cout << a << endl;
cout << str;
*getline 함수는 입력 받고 개행문자를 버퍼에 보관하지 않아서 비워주지 않아줘도 된다. *
728x90
'c++' 카테고리의 다른 글
| unordered_set (0) | 2023.03.24 |
|---|---|
| vector (0) | 2023.03.24 |
| 찾으려는 key 값보다 같거나 큰 숫자가 몇 번째에서 처음 등장하는지 찾기 (0) | 2023.02.07 |
| 벡터의 중복되는 원소 제거하기 (0) | 2023.02.07 |
| iterator 반복자 사용 (0) | 2022.12.28 |