题意和思路都非常非常明确,直接读入->set->输出
然而,在读入上竟然出了问题
最早是是用的
string temp; scanf("%s",temp); printf("%s",temp);
这种写法,但是编译器报错,提示
error: cannot pass objects of non-trivially-copyable type 'std::string {aka class std::basic_string<char>}' through '...'
scanf("%s",s);
查了一下,是因为string类本身长度是不定的,在没有给他赋值上字符串前,是没意义的,而scanf需要一个地址来存储,所以直接读入是很有可能出现问题的。
而输出的时候,则由于c、c++不同的特性,需要用temp.c_str()
本来想换成cin读入,但是因为不关闭同步会很慢,就查了下怎么能读入更快,看到用 getchar() 更快,想了下,就自己写吧
里面顺便把大小写也转化了下
int read(char s[]){ char c; int i=0; while(!(((c=getchar())>='A'&&c<='Z')||(c>='a'&&c<='z'))) if(c==EOF) return 0; while((c>='A'&&c<='Z')||(c>='a'&&c<='z')){ s[i++]=(c>='A'&&c<='Z'?c-'A'+'a':c); c=getchar(); } s[i]='