c++删除空格

C++ remove whitespace

本文关键字:空格 删除 c++      更新时间:2023-10-16

我有这段代码来删除std::字符串中的空白,并删除空格后的所有字符。如果我有abc def它只返回abc。我怎么让它从"abcdefghi"变成"abcdefghi"?

#include<iostream>
#include<algorithm>
#include<string>
int main(int argc, char* argv[]) {
    std::string input, output;
    std::getline(std::cin, input);
    for(int i = 0; i < input.length(); i++) {
        if(input[i] == ' ') {
            continue;
        } else {
            output += input[i];
        }
    }
    std::cout << output;
    std::cin.ignore();
}

你的实际问题是别人提到的关于cin >>但是您可以使用下面的代码从字符串中删除空白:

str.erase(remove(str.begin(),str.end(),' '),str.end());

问题是cin >> input只读取到第一个空格。使用getline()代替。(谢谢,@BenjaminLindley !)

由于>>操作符无论如何都会跳过空白,因此您可以执行以下操作:

while (std::cin>>input)
    std::cout << input;

但是,这将复制整个文件(删除空白),而不仅仅是一行。

我用来删除字符的函数叫做"conv":

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
string conv(string first, char chr)
{
    string ret,s="x";
    for (int i=0;i<first.length();i++)
    {
        if (first[i]!=chr)
        s=s+first[i]; 
    }
    first=s;
    first.erase(0,1);
    ret=first;
    return ret;
    }
int main()
{
    string two,casper="testestestest";
    const char x='t';
    cout<<conv(casper,x);
    system("PAUSE");
    return 0;
}

您需要将const char x更改为' '(空白,空白)才能完成任务。

ifstream ifs(filename);
string str, output;
vector<string> map;
while (getline(ifs, str, ' ')) {
    map.push_back(str);
}
for(int i=0; i < map.size();i++){
    string dataString = map[i];
    for(int j=0; j < dataString.length(); j++){
        if(isspace(dataString[j])){
            continue;
        }
        else{
            output +=dataString[j];
        }
    }
}