c++ - 如何从 C++ 程序中删除多个空格并用一个空格代替它

标签 c++

如何从 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/

相关文章:

c++ - 如何在 VS 2010 中使用 GetExtension

c++ - 构造函数内部的 Printf 未显示在控制台中

c++ - 将设置/获取请求映射到 C++ 类/结构更改中

c++ - 查找预编译 header 时出现意外的文件结尾。您是否忘记将 #include stdafx.h 添加到您的源代码中?

c++ - 为什么STL vector的迭代器可以指向不存在的元素?

c++ - 如何在不同的CMakeList.txt之间共享变量?

c++ - 使用一种方法可以返回与方法目标无关的值或相应命名的两个单独方法更好吗?

c++ - 如何在 POCO::Net::HTTPResponse 对象中获取内容编码?

c++ - 归并排序算法建议

c++ - 多字节字符常量和位图文件头类型常量