문자열 선언
string s
char c[LENGTH]
1. cin>>s
scanf()와 유사하다.
#include <iostream>
using namespace std;
int main(void){
string s;
cin>>s;
}
문제점: 공백이 있으면 잘라버림, 개행 못읽음
ex) hello i am a student를 입력하면 hello만 나온다.
2. getline(cin, s)
- getline(istream& is, string& str)
- 헤더는 #include <string>
#include <iostream>
#include <string>
string s;
getline(cin, s);
- string을 받으므로 char*형은 받지 못한다.
- getline은 문자열 자르기에도 사용된다.
문제점: 엔터(개행문자)까지 읽어버려서 버퍼에 엔터가 들어감.
int x;
string str;
cin>>x;
getline(cin, str);
x를 입력하면서 받은 엔터(개행문자 \0)가 버퍼에 남아서 getline을 채워버림
해결: cin.ignore()
cin>>x;
cin.ignore();
getline(cin, str);
cf) 문자열만 연속으로 받을 땐 cin.ignore()없어도 된다. 왜냐? getline이 개행까지 읽어버리기 떄문이다.
cin이 개행문자를 못읽음
cin >> n;
cin.ignore();
for(int i=0; i<n; i++){
getline(cin, s);
}
3. cin.getline(s, sizeof(s))
- cin.getline(char* s, streamsize n)
- #include <iostream>
- 공백 무시, 엔터로 잘림
- length가 필요하기 때문에+char로 받기 때문에 char c[]로 스트링을 선언할시 사용하자
- 문자열 자르기 가능.
char c[LENGTH];
string str;
do {
cin.clear();
cin.getline(c, LENGTH);
t += c;
} while(cin.fail())
'프로그래밍 언어 > c c++' 카테고리의 다른 글
[c++] 문자열을 특정 문자 기준으로 자르기2 getline & stringstream (0) | 2020.10.10 |
---|---|
[c++] accumulate 함수 (0) | 2020.10.06 |
[c c++] 문자열을 특정 문자 기준으로 자르기1 strtok (0) | 2020.04.11 |
[c] 문자열 입력 (0) | 2020.04.11 |
[c++] STL map container 사용 (0) | 2020.03.11 |
댓글