按要求模拟即可:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;getline(cin,s);
for(int i=0;i<s.size();i++)
{
//开头字母是小写 那么 转大写
if(i==0&&islower(s[i]))s[i]=toupper(s[i]);
//删除空格
if(s[i]==' ') //保留s[i]的空格,s[j]的空格删掉
{
int j=i+1;
while(s[j]==' ')
{
s.erase(j,1); //删除j位置的一个空格
}
//单词首字母转大写
if(islower(s[j]))
{
s[j]=toupper(s[j]);
}
}
//数字前后+ ‘—'分隔
if(isdigit(s[i]))
{
//头插
if(isalpha(s[i-1]))
{
s.insert(i,"_");
}
//尾插
if(isalpha(s[i+1]))
{
s.insert(i+1,"_");
}
}
}
cout<<s;
return 0;
}