stdのcinは空行が入ると文字の入力受け取りをそこでストップしてしまいます。
例を書くと
入力
abc bc
string str;
// str = abc
cin >> str;
strにはabcのみが代入されます。
空行が入る場合でも、全ての文字列を受け取るには、std::getlineを使います。
std::getlineの使用例を書きます。
string str;
// abc bc
getline(cin, str);
空行もstrに代入されます。
また、文字通りgetline関数なので、改行がある地点までが代入されることになります。
入力
abc bc\nbc
string str;
// abc bc(改行後のbcは入らない)
getline(cin, str);