Вы хотите использовать cin.getline (), который можно использовать так:
cin.getline(name, 9999, '\n');
И будет включать все до новой строки или 9999 символов. Это работает только для массивов символов в стиле c.
getline(cin, name, '\n');
будет работать для std :: strings.
Если вы хотите заменить пробел подчеркиванием, вам придется сделать это вручную. Предполагая, что вы используете std :: string, вы можете создать такую функцию:
void replace_space(std::string &theString)
{
std::size_t found = theString.find(" ");
while(found != string::npos)
{
theString[found] = '_';
found = theString.find(" ", found+1);
}
}