方法一:利用cin在输入时不会读入空格,tab,回车。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
while(cin>>s)
{
cout<<s<<" ";
}
return 0;
}
方法二:利用标识符flag来标记上一个输出字符是否为空格,如果是,那么本次字符如果还是空格的话不输出。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
int flag=0;
for(int i=0;i<s.size();i++)
{
if(s[i]!=' ')
{ cout<<s[i];
flag=0;}
else if(flag==0)
{
cout<<" ";
flag=1;
}
else
continue;
}
return 0;
}
萌虎玩觉得很赞👍
比如: hello world , 当条件触发时, 说明我要拼接下一个字母才可以, 所以+ ‘ ‘ + s[++i], 那为什么++i呢, 这句话我想要实现的效果是拼接一个空格再拼接s[i + 1], 但是我拼接s[i + 1]然后不++i的话, 下一个循环就到了i+1的位置了, 这个字母其实我已经加过了,再加进去就错了, 所以我写成了++i
谢谢大佬解答,感谢!!懂了
#include [HTML_REMOVED]
#include [HTML_REMOVED]
using namespace std;
int main(){
}
遇到连续空格时消去前一个,保留最后一个空格
if判断
#include[HTML_REMOVED]
#include[HTML_REMOVED]
using namespace std;
int main(){
string a;
getline(cin,a);
for(int i=0;i<a.size();i++){
if((int)a[i]==32&&(int)a[i+1]==32) continue;
else cout<<a[i];
}
return 0;
}
究极简化版一直没搞懂while(cin>>s)是什么意思,可以解释一下嘛qaq
cin >> s; 就是在读入数据 当没有可读入数据的时候 cin返回0还是faults来着 就不进循环了
我去,牛
帅死了
%%%
方法一输出的时候为什么不会输出一个字母+一个空格呢?
方法一给我气死,我还想着怎么跨过空格
你好厉害啊
方法2的文末空格去不了吧
法一确实厉害
#include[HTML_REMOVED]
using namespace std;
int main()
{
string s;
getline(cin,s);
string s1=” “;s1+=s[0];
for(int i=1;i<s.size();i)
{
if(s[i-1]!=’ ‘||s[i]!=’ ‘)
s1+=s[i];
}
for(int i=1;i<s1.size();i)
cout<<s1[i];
return 0;
}
这样会不会有个问题就是如果英文句号前面有空格,它也会输出一个
厉害
太帅了哥3
#include[HTML_REMOVED]
using namespace std;
int main(){
string a,b;
getline(cin,a);
b += a[0];
int s = 0;
for(int i = 0; i < a.size()-1; i++){
if(a[i] + a[i+1] != 64){
b += a[i+1];
}
}
cout<<b;
}