删除空格后如何在字符串中插入空格

时间:2019-07-13 09:38:19

标签: c++ string

我正在尝试: 1)从给定的字符串中删除空格 2)从删除的空格字符串中,将空格插入到原始位置 3)最终结果应为原文。

string original =“快速的棕色狐狸跳过那只懒狗。     字符串removeSpace,withSpace;

int foo[8];
int count = 0;

cout << original << endl;

for (int i = 0; i < original.size(); i++)
{
    if (char(int(original[i])) == 32)
    {
        foo[count] = i;

        count++;
    }
    else
    {
        removeSpace += original[i];
    }
}
cout << endl;
for (int i = 0; i < 8; i++)
{
    cout << "Spaces at : " << foo[i] << endl;
}
cout << "==========With spaces remove==========" << endl;
cout << removeSpace << endl;
count = 0;

for (int i = 0; i < removeSpace.size(); i++)
{
    if (foo[count] == i)
    {
        withSpace += ' ';
        count++;

    }
    withSpace += removeSpace[i];
}

cout << "==========With spaces inserted==========";
cout << "\n" << withSpace << endl;

这就是我得到的:

quickb rownfo xjum psover thela zydo g

如何将它们插回去 “敏捷的棕狐跳过了懒狗”

1 个答案:

答案 0 :(得分:1)

很明显,从您的输出看是什么问题。在foo中,您要存储空格在删除任何空格之前的索引。但是,当您放回空格时,您正在将fooi进行比较,foo[cout]是删除空格后的索引 。这不是一件有意义的事情。您只需要调整算法来解决这种差异。

这是对代码的最小调整,可以解决该问题。通过将withSpacefoo[count]字符串的大小进行比较,我正在比较like。 withSpace.size()for (int i = 0; i < removeSpace.size(); i++) { if (foo[count] == withSpace.size()) { withSpace += ' '; count++; } withSpace += removeSpace[i]; } 都是字符串添加空格后的索引和大小

if (char(int(original[i])) == 32)

完整代码here

此代码

if (original[i] == ' ')

是以复杂方式完成简单事情的一个很好的例子。这样更好

const RightNav = (props) => {
  return(
    <div className = "rightnav">
      <RightNavItem name = {home}>
        <HomeSVG />
      </RightNavItem>

      <RightNavItem name = {profile}>
         <ProfileSVG />
      </RightNavItem>
      .
      .
      .
    </div>
  );
};