用双指针步进处理
#include<string> #include<iostream> using namespace std; bool isSpliter(char c){//分隔符可能是tab if(c==' '||c=='\t'||c=='\r'||c=='\n'||c=='\0') return true; return false; } int main(){//习题43 北京大学 首字母大写 //双指针步进即可,用string再split太慢了 //scanf会吃掉空格,用getline string words; while(getline(cin,words)){ int i=0,j=0; while(words[j]!='\0'&&words[i]!='\0'){ while(!isSpliter(words[j])) j++; if(words[i]<='z' && words[i]>='a') words[i]-=32; i = ++j; } cout<<words<<endl; } return 0; }