• 按行读取。
  • 对于字符串第一个字符,直接判断是否需要大写;
  • 遍历后续字符,遇到特殊字符时,对特殊字符的下一个字符进行判断;同时输出当前读到的字符。
#include <iostream>
using namespace std;

int main() {
    string str;
    while(getline(cin,str)){
        if('a'<=str[0]&&str[0]<='z') str[0]='A'+str[0]-'a';
        for(int i=0;i<str.length();i++){
            if(str[i]==' '||str[i]=='\t'||str[i]=='\n'){
                if('a'<=str[i+1]&&str[i+1]<='z')
                str[i+1]='A'+str[i+1]-'a';
            }
            cout<<str[i];
        }
    }
    return 0;
}