C++ C++;不从字符串中删除空格
我想先删除字符串中的空格,然后将该字符串输入到函数“calcPnct()”中,然后该函数将输出该字符串中每个字符的外观百分比。我在网上查过如何删除空格,但我特别想使用for循环。我尝试过的方法不管用,但为什么不管用呢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,
#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;i cout您读取的字符串中没有空格
cin >> input;
将只读取非空白字符
如果要读取整行(包括空格),请使用getline
getline(cin, input);
请仅包括代码的必要部分。