题目描述
思想阐述
由于cin读入的特性,简单就能写完。
#include <iostream>
using namespace std;
int main(){
string m;
while(cin>>m){
cout<<m<<" ";
}
}
不过考虑到pta上对末尾空格要求严格。所以这里给出另一种思想直接模拟一下:
这里我们不妨取一个字符,当字符与题目所给字符串比对为非空格时,读入并累加到新字符串。
当读入空格时,不妨先加上一个空格。毕竟只是去掉多余的空格。
此时只要新设立一个变量k为原变量i+1,判断这个变量(实际上为空格后一个字符,如果是多余空格那么此变量仍然为空格),k++继续while判断直到k取到字符,再把它还给i累加到新字符串即可。
代码实现
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int main() {
string m;
getline(cin, m); // 从标准输入读取一行字符串,并存储在变量 m 中
string r; // 用于存储去除多余空格后的字符串
for (int i = 0; i < m.size(); ++i) {
if (m[i] != ' ') {
r += m[i]; // 如果字符不是空格,将其添加到结果字符串 r 中
} else {
r += ' '; // 如果字符是空格,将一个空格添加到结果字符串 r 中
int j = i + 1;
while (j < m.size() && m[j] == ' ') {
j++; // 跳过连续的空格
}
i = j - 1; // 更新循环变量 i,以跳过连续的空格
}
}
cout << r; // 输出处理后的字符串,去除了多余的空格
return 0;
}