// Declare second integer, double, and String variables. int i2; double d2; string s2; // Read and save an integer, double, and String to your variables. cin >> i2; cin >> d2; if (getline(cin >> ws, s2)) { // eat whitespace getline(cin, s2); } // Print the sum of both integer variables on a new line. cout << i + i2 << endl; // Print the sum of the double variables on a new line. cout << fixed << setprecision(1) << d + d2 << endl; // Concatenate and print the String variables on a new line // The 's' variable above should be printed first. cout << s + s2 << endl;
cin.clear(); cin.ignore(10000, '\n');
cin 은 \n(엔터) 전 까지 입력받는 것과 달리
getline 은 \n 까지 입력받는다.
그리고 cin은 처음 입력된 whitespace 는 무시한다. (띄어쓰기, 엔터, 탭)
따라서 여기서 12 \n 5 \n hello \n 을 입력했다면
처음 cin 에서 12 까지 입력받는다. 그래서 \n 5 \n hello \n 가 남아있다.
그 다음 cin 은 \n을 무시하고 5 까지 입력받는다. 그래서 \n hello \n 가 남아있다.
그 다음 getline 을 하면 \n을 무시하지않고 입력받는다. 그래서 hello \n 은 그대로 남아있게된다.
따라서 whitespace를 없애주는 작업을 해야한다.
'Programming > Tip&Informaion' 카테고리의 다른 글
[C++] iterator, auto 를 이용한 stl 벡터의 합, 평균 (0) | 2016.05.10 |
---|---|
[C++] 무한 입력받기 (0) | 2016.04.30 |
[C++] 2차원 배열 동적 할당 (0) | 2016.03.24 |
[c++] cout 소수점 자릿수 정하기 2 (0) | 2016.03.11 |
[c++] sort (0) | 2016.03.01 |