scanf()를 어느정도 대체
int price;
cin >> price;
cout << price;
float price
cin >> price;
cout << price;
scanf는 (char*) 경계 검사를 하지 않는다.
문자열의 끝을 알 수 없기 때문에 마지막을 null로 판단한다.
cin도 같다.
// C에서 경계 검사 문제 해결
char line[512];
char temp[512];
char firstName[4];
if (fgets(line, 512, stdin) != NULL)
{
if (sscanf(line, "%s", temp) == 1 && strlen(temp) < 4)
{
strcpy(firstName, temp);
}
}
// C++ 에서 경계 검사 문제 해결
char firstName[4];
cin >> setw(4) >> firstName;
cin >> line;
if (!cin.eof()) // end of file
{
// ...
}
case 2
console에서 입력후 enter를 쳤을땐 eofbit = unset
text file로 읽어서 enter를 없을때 eofbit = set
cin.clear(); // 정상상태로 만들기
cin.ignore(); // 문자 1개 버림
cin.ignore(10); // 문자 10개 버림
cin.ignore(10, '\n'); // 10개 버림, 단 개행(\n)을 버리면 멈춤
cin.ignore(LLONG_MAX, '\n') // 최대 문자 수를 버림, 단 개행(\n)을 버리면 멈춤
개행을 만날 때 까지 모든 문자를 가져옴
개행 문자는 입력 스트림에 남아 있음
// 99개를 가져옴
get(name, 100);
// 99개를 가져오거나 '#'을 만나면 멈, '#'은 저장하지 않음
get(name, 100, '#');
개행을 만날 때 까지 모든 문자를 가져옴
개행 문자는 입력 스트림에 버림
getline(name, 100);
getline(name, 100, '#');