일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- AWS
- pandas
- react native
- OG tag
- google cloud
- skt fellowship 3기
- 순환참조
- yolo
- Spring
- @Transactional
- marksense.ai
- javascript
- Spring Boot
- STT
- idToken
- matplotlib
- YOLOv5
- 졸프
- Expo
- C++
- Loss Function
- 코드업
- 커스텀 데이터 학습
- html
- google 로그인
- 2021 제9회 문화공공데이터 활용경진대회
- google login
- oauth
- JPA
- 양방향 매핑
- Today
- Total
민팽로그
[c++] 공백 포함하여 문자열 입력 받기 본문
1. std::getline(std::istream & _Istr, std::string &_Str, char _Delim)
- <string> 헤더파일을 추가해줘야 함
- 입력 스트림으로부터 문자열을 읽어 string 변수에 값을 넣어줌
- 구분자로 사용할 문자를 설정해 줄 수도 있음(default는 \n임)
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1, s2;
cout << "----입력----" << endl;
getline(cin, s1);
getline(cin, s2);
cout << "----출력----" << endl;
cout << s1 << endl;
cout << s2 << endl;
return 0;
}
실행 결과를 보면 개행 문자를 입력 버퍼에 남겨두지 않는 것 같음.
2. cin.getline(char *_Str, std::streamsize _Count, char _Delim)
- 입력받은 문자를 저장할 char 배열 형식의 배열, 입력받을 문자열의 최대 길이를 인자로 갖음
- 마찬가지로 구분자로 사용할 문자를 설정해 줄 수도 있음(default는 \n임)
#include <iostream>
#include <string>
using namespace std;
int main() {
char s1[20], s2[20];
cout << "----입력----" << endl;
cin.getline(s1, 20);
cin.getline(s2, 20);
cout << "----출력----" << endl;
cout << s1 << endl;
cout << s2 << endl;
return 0;
}
마찬가지로 개행 문자를 입력 버퍼에 남겨두지 않음.
개행 문자는 저장하지 않고 배열에 저장할 때 널 문자로 대체함.
3. cin.get(char *_Str, std::streamsize _Count, char _Delim)
- cin.getline과 같은 매개변수 사용
#include <iostream>
#include <string>
using namespace std;
int main() {
char s1[20], s2[20];
cout << "----입력----" << endl;
cin.get(s1, 20);
cin.get(s2, 20);
cout << "----출력----" << endl;
cout << s1 << endl;
cout << s2 << endl;
return 0;
}
처음에 문자열을 입력 후 엔터를 치면 다음 입력을 받지 않음.
버퍼에 개행문자를 남겨두기 때문에 다음 입력으로 해당 개행문자가 넘어감.
따라서 아래와 같이 cin.get()를 한번 더 호출하여 개행 문자를 버퍼에서 지워줌.
#include <iostream>
#include <string>
using namespace std;
int main() {
char s1[20], s2[20];
cout << "----입력----" << endl;
cin.get(s1, 20);
cin.get();
cin.get(s2, 20);
cout << "----출력----" << endl;
cout << s1 << endl;
cout << s2 << endl;
return 0;
}
입력 버퍼에 개행문자가 남아있지 않아 다음 입력을 받을 수 있음.
+ cin.get에 아무 인자를 넘겨주지 않으면 문자 하나를 읽음.
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "----입력----" << endl;
char a = cin.get();
char b = cin.get();
char c = cin.get();
char d = cin.get();
cout << "----출력----" << endl;
cout << a << b << c << d;
cout << "----끝----";
return 0;
}
입력된 값: h i\n(엔터)
참조
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=daimon123&logNo=220465985570
'C++' 카테고리의 다른 글
[c++] map, unordered_map (0) | 2022.05.08 |
---|---|
[c++] string 자료형 문자열 비교: compare함수 (0) | 2022.05.06 |
[C++] lower_bound, upper_bound (0) | 2022.03.28 |
[C++] 문자열 파싱 - 문자열에서 토큰 분리 (0) | 2021.12.30 |
[c++] vector 자료구조 (0) | 2021.12.11 |