해당 내용은 Pope 님의 C++ 언메니지드 프로그래밍 강좌를 공부하면서 정리하였습니다.
//정수형, 실수형
int hours;
cin >> hours;
float price;
cin >> price;
cout << "Today I studied for " << hours << " hours." << endl;
char line[512];
char temp[512];
char firstname[4];
if (fgets(line, 512, stdin) != NULL) // line에 담을 수 있는 char만 읽어옴 표준 입력으로 부터
{
if (sscanf(line, "%s", temp) == 1 && strlen(temp) < 4)
{
strcpy(firstname, temp);
}
}
char firstname[4];
cin >> setw(4) >> firstname; // 3글자 까지 읽고 마지막 널문자
char line[512];
int data;
" hello 512"
cin >> line >> data; // line에 hello 들어가고 data에 512 들어감 whilespace 지나가고 저장됨.
// in c
if (fgets(line, 10, stdin) != NULL)
{
//
}
// in c++
cin >> line;
if (!cin.eof()) // end of file 만났으면 true
{
//
}
int number;
cin >> number
| 입력값 | eofbit | failbit | 비고 |
|---|---|---|---|
| 456abc | unset | unset | 456까지 읽고 a위치에서 멈춤 |
| 456 | (un)set | unset | 456까지 읽고1) 6뒤가 newline 이면 eofbit unset 2) 6뒤가 eof이면(파일입력) eofbit set |
| abc | unset | set | 값을 읽지 못하고 a위치에서 멈춤 |
| eof | set | set |
//clear()
//스트림을 좋은 상태(good state)로 돌려줌
cin.clear();
//ignore()
// 파일 끝에 도달하거나 지정한 수만큼 문자를 버리고 멈춤
cin.ignore(); // 문자 1개를 버림
cin.ignore(10); // 문자 10개를 버림
cin.ignore(10, '\n'); // 10개를 버리는데 단, 그전에 뉴라인문자를 버리면 멈춤
cin.ignore(LLONG_MAX, '\n'); // 최대 문자 수를 버림. 단, 그전에 뉴라인문자를 버리면 멈춤
//get()
// 뉴라인 문자를 만나기 직전까지의 모든 문자를 가져옴
// 뉴라인 문자는 입력 스트림에 남아 있음
get(firstname, 100); // 99개의 문자를 가져오거나(null 포함 100개), 뉴라인 문자가 나올때 까지
get(firstname, 100, '#'); // 99개의 문자를 가져오거나, #문자를 만날때 까지
//getline()
// 뉴라인 문자를 만나기 직전까지의 모든 문자를 가져옴
// 뉴라인 문자는 입력 스트림에서 버림!
getline(firstname, 100);
getline(firstname, 100, '#');