본문 바로가기

Programming/Tip&Informaion

[C++] cin 하고 getstring 하는 법


// 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를 없애주는 작업을 해야한다.