C++删除空格

tr0*_*ing 7 c++ string stl std

我有这个代码删除std :: string中的空格,它删除空格后的所有字符.所以,如果我有"abc def",它只返回"abc".如何让它从"abc def ghi"变为"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();
}
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 8

问题是cin >> input只读到第一个空格.请getline()改用.(谢谢,@ BenjaminLindley!)

  • 你的意思是getline free函数,因为它更好,而`input`反正是一个`std :: string`. (2认同)

Vij*_*jay 8

好吧,其他人提到的实际问题是关于cin >> 但你可以使用下面的代码从字符串中删除空格:

str.erase(remove(str.begin(),str.end(),' '),str.end());
Run Code Online (Sandbox Code Playgroud)