如何从 C++ 程序中删除多个空格并用一个空格代替它?
我尝试的是:-
#include<iostream>
using namespace std;
int main()
{
char str[80],i, j;
cin>>str;
for(i=0; i!='\0'; i++)
{
if(str[i]=' '&&str[i]==str[i+1])
{
for(j=i+1; str[j]!='\0'; j++)
str[j-1]=str[j];
}
}
cout<<str;
}
最佳答案
cin
会在遇到空格时截断字符串。要读取整行,请使用 getline()
。我还推荐使用 std::string
。
std::string str;
std::getline(std::cin,str);
for(i=str.size()-1; i >= 0; i-- )
{
if(str[i]==' '&&str[i]==str[i-1]) //added equal sign
{
str.erase( str.begin() + i );
}
}
循环从末尾开始迭代,这样
1. 移除了 str.size()
复杂化。
2. 在删除操作中引入了一点效率(如果有很多空格)。
关于c++ - 如何从 C++ 程序中删除多个空格并用一个空格代替它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073312/