在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
把每个单词的首字母变为大写。
把数字与字母之间用下划线字符(_)分开,使得更清晰
把单词中间有多个空格的调整为 1 个空格。
#include <iostream>
#include<string>
//#include<algorithm>
using namespace std;
void change(char &a)
{
if(a>='a'&&a<='z')
{
a-=32;
}
}
bool isNum(int m)
{
if(m>='0'&&m<='9')
{
return true;
}
else
{
return false;
}
}
bool isChar(char n)
{
if((n>='a'&&n<='z')||(n>='A'&&n<='Z'))
{
return true;
}
else
{
return false;
}
}
int main()
{
string str;
getline(cin,str); //getline 的 C++ 函数。此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。
change(str[0]); //确保第一个字母大写
for(int i=0,j=1;i<str.size();i++,j++)
{
if(str[i]==' '&&j<str.size()) //注意是单引号
{
if(str[j]==' ')
{
continue; //此处同时也保证了不会有两个空格
}
else
{
cout<<str[i];
change(str[j]);
}
}
else if((isChar(str[i])&&isNum(str[j]))||(isChar(str[j])&&isNum(str[i]))) //注意括号
{
cout<<str[i]<<"_";
}
else
{
cout<<str[i];
}
}
return 0;
}