C++ C++;不从字符串中删除空格

C++ C++;不从字符串中删除空格,c++,string,C++,String,我想先删除字符串中的空格,然后将该字符串输入到函数“calcPnct()”中,然后该函数将输出该字符串中每个字符的外观百分比。我在网上查过如何删除空格,但我特别想使用for循环。我尝试过的方法不管用,但为什么不管用呢 #include <iostream> #include <cmath> using namespace std; double calcPnct(string input, int i); int main() { string input,

我想先删除字符串中的空格,然后将该字符串输入到函数“calcPnct()”中,然后该函数将输出该字符串中每个字符的外观百分比。我在网上查过如何删除空格,但我特别想使用for循环。我尝试过的方法不管用,但为什么不管用呢

#include <iostream>
#include <cmath>
using namespace std;

double calcPnct(string input, int i);

int main()
{
    string input, orig;
    int count = 0;
    string alphabet = "abcdefghijklmnopqrstuvwxyz";
    cout << "Enter string: " << endl;
    cin >> input;

    //main problem is this for loop not working
    for (int i = 0; i < input.length(); i++)
       {
            if ( input[i] == ' ' )
            {
                for ( int j = i; j < input.length(); j++ )
                {
                    input[j] = input[j+1];
                }
                i = i - 1;
            }
       }


    for(int k = 0; input[k] != '\0'; k++)
    {
        input[k] = tolower(input[k]);
    }



    for(int l = 0; l < 26; l++)
    {
        cout << alphabet.at(l) << ": " << calcPnct(input,l) << " %" <<endl;
    }

    return 0;
}

double calcPnct(string input, int index)
{
    double total;
    double aNum = 0, bNum = 0, cNum = 0, dNum = 0, eNum = 0, fNum = 0, gNum = 0, hNum = 0;
    double iNum = 0, jNum = 0, kNum = 0, lNum = 0, mNum = 0, nNum = 0, oNum = 0, pNum = 0;
    double qNum = 0, rNum = 0, sNum = 0, tNum = 0, uNum = 0, vNum = 0, wNum = 0, xNum = 0, yNum = 0, zNum = 0;

    for(int i = 0; i < input.length(); i++)
    {
        if(input[i] != '.' && input [i] != ',')
        {
            total ++;
        }
    }

    switch(index)
    {
        case 0:
            for(int a = 0; a < input.length(); ++a)
            {
                if(input.at(a) == 'a')
                {
                    aNum++;
                }
            }
            return aNum/total * 100;
            break;

        case 1:
            for(int b = 0; b < input.length(); ++b)
            {
                if(input.at(b) == 'b')
                {
                    bNum++;
                }
            }
            return bNum/total * 100;
            break; 

        case 2:
            for(int c = 0; c < input.length(); ++c)
            {
                if(input.at(c) == 'c')
                {
                    cNum++;
                }
            }
            return cNum/total * 100;
            break;

        case 3:
            for(int d = 0; d < input.length(); ++d)
            {
                if(input.at(d) == 'd')
                {
                    dNum++;
                }
            }
            return dNum/total * 100;
            break;

        case 4:
            for(int e = 0; e < input.length(); ++e)
            {
                if(input.at(e) == 'e')
                {
                    eNum++;
                }
            }
            return eNum/total * 100;
            break;

        case 5:
            for(int f = 0; f < input.length(); ++f)
            {
                if(input.at(f) == 'f')
                {
                    fNum++;
                }
            }
            return fNum/total * 100;
            break;

        case 6:
            for(int g = 0; g < input.length(); ++g)
            {
                if(input.at(g) == 'g')
                {
                    gNum++;
                }
            }
            return gNum/total * 100;
            break;

        case 7:
            for(int h = 0; h < input.length(); ++h)
            {
                if(input.at(h) == 'h')
                {
                    hNum++;
                }
            }
            return hNum/total * 100;
            break;

        case 8:
            for(int i = 0; i < input.length(); ++i)
            {
                if(input.at(i) == 'i')
                {
                    iNum++;
                }
            }
            return iNum/total * 100;
            break;

        case 9:
            for(int j = 0; j < input.length(); ++j)
            {
                if(input.at(j) == 'j')
                {
                    jNum++;
                }
            }
            return jNum/total * 100;
            break;

        case 10:
            for(int k = 0; k < input.length(); ++k)
            {
                if(input.at(k) == 'k')
                {
                    kNum++;
                }
            }
            return kNum/total * 100;
            break;

        case 11:
            for(int l = 0; l < input.length(); ++l)
            {
                if(input.at(l) == 'l')
                {
                    lNum++;
                }
            }
            return lNum/total * 100;
            break;

        case 12:    
            for(int m = 0; m < input.length(); ++m)
            {
                if(input.at(m) == 'm')
                {
                    mNum++;
                }
            }
            return mNum/total * 100;
            break;

        case 13:
            for(int n = 0; n < input.length(); ++n)
            {
                if(input.at(n) == 'n')
                {
                    nNum++;
                }
            }
            return nNum/total * 100;
            break;

        case 14:
            for(int o = 0; o < input.length(); ++o)
            {
                if(input.at(o) == 'o')
                {
                    oNum++;
                }
            }
            return oNum/total * 100;
            break;

        case 15:
            for(int p = 0; p < input.length(); ++p)
            {
                if(input.at(p) == 'p')
                {
                    pNum++;
                }
            }
            return pNum/total * 100;
            break;

        case 16:
            for(int q = 0; q < input.length(); ++q)
            {
                if(input.at(q) == 'q')
                {
                    qNum++;
                }
            }
            return qNum/total * 100;
            break;

        case 17:
            for(int r = 0; r < input.length(); ++r)
            {
                if(input.at(r) == 'r')
                {
                    rNum++;
                }
            }
            return rNum/total * 100;
            break;

        case 18:
            for(int s = 0; s < input.length(); ++s)
            {
                if(input.at(s) == 's')
                {
                    sNum++;
                }
            }
            return sNum/total * 100;
            break;

        case 19:
            for(int t = 0; t < input.length(); ++t)
            {
                if(input.at(t) == 't')
                {
                    tNum++;
                }
            }
            return tNum/total * 100;
            break;

        case 20:
            for(int u = 0; u < input.length(); ++u)
            {
                if(input.at(u) == 'u')
                {
                    uNum++;
                }
            }
            return uNum/total * 100;
            break;

        case 21:
            for(int v = 0; v < input.length(); ++v)
            {
                if(input.at(v) == 'v')
                {
                    vNum++;
                }
            }
            return vNum/total * 100;
            break;

        case 22:
            for(int w = 0; w < input.length(); ++w)
            {
                if(input.at(w) == 'w')
                {
                    wNum++;
                }
            }
            return wNum/total * 100;
            break;

        case 23:
            for(int x = 0; x < input.length(); ++x)
            {
                if(input.at(x) == 'x')
                {
                    xNum++;
                }
            }
            return xNum/total * 100;
            break;

        case 24:
            for(int y = 0; y < input.length(); ++y)
            {
                if(input.at(y) == 'y')
                {
                    yNum++;
                }
            }
            return yNum/total * 100;
            break;

        case 25:
            for(int z = 0; z < input.length(); ++z)
            {
                if(input.at(z) == 'z')
                {
                    zNum++;
                }
            }
            return zNum/total * 100;
            break;
    }       


}
#包括
#包括
使用名称空间std;
双calcPnct(字符串输入,int i);
int main()
{
字符串输入,orig;
整数计数=0;
字符串字母表=“abcdefghijklmnopqrstuvxyz”;
不能输入;
//主要问题是这个for循环不工作
对于(int i=0;icout您读取的字符串中没有空格

cin >> input;
将只读取非空白字符

如果要读取整行(包括空格),请使用
getline

getline(cin, input);

请仅包括代码的必要部分。