2047:【例5.16】过滤空格
题目描述
过滤多余的空格。一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
输入
一行,一个字符串(长度不超过200
),句子的头和尾都没有空格。
输出
过滤之后的句子。
输入样例
Hello world.This is c language.
输出样例
Hello world.This is c language.
在输入string字符串时,如果使用方法2:
char a[210];
gets(a); //gets(char[]):可以获取整行输入的内容,并存到数组对象中
int len = strlen(a);
for(int i = 0; i < len; i++){
if(a[i] != ' ' || a[i + 1] != ' ') cout << a[i];
//当a[i]本身不是空格,或者(a[i]本身是空格但)a[i]的下一位不是空格时,输出
}
在OJ中输入会报编译错误。但是如果用方法2:
string s;
getline(cin, s); //输入整行的字符串
for(int i = 0; i < int(s.size()); i++){ //s.size()类型是long long,要比较就转换成int
if(s[i] != ' ' || s[i + 1] != ' ') cout << s[i];
}
return 0;
就能够运行通过。这是为啥呢?
OJ上的CPP版本不同?