c++ - 从 char 数组中删除条目

标签 c++ arrays algorithm loops for-loop

我正在创建一个程序,用于收集最多 10 个字符的字符数组。然后它要求用户输入一个字符。如果找到该字符,它将删除该字符数组中的所有条目,并将数组中剩余的字符向前移动以删除所有间隙。

这是我目前的代码:

for (int n = 0; n == 10; n++)
{
    int index(0);
    **while (text[index] != EOT)
    {
        if (text[index] == letter)
        {
            while (text[index] != EOT)
            {
                text[index] = text[index + 1];
                index++;
            }
        }
        else
            index++;
    }**
}

粗体代码(或中间带有 ** * 的代码目前正在运行,并删除了用户输入的字符的第一个实例。所以我决定在整个 while 循环周围放置一个 for 循环,使其重复代码 10 次。因此,由于输入限制为 10 个字符,它会(或应该)起作用吗?

但是它不再做任何事情了。它甚至不会删除角色的第一个实例,这真的让我感到困惑。谁能看出我哪里出错了?

它是 c++,顺便说一句,我正在使用 Visual Studios 2013。

谢谢!

最佳答案

循环的这条控制语句

for (int n = 0; n == 10; n++)

表示循环永远不会执行。您将零分配给 n,然后说:“当 n 等于 10 时执行循环”。但是 n 正在回答:“我不等于 10”。:)

您可以使用标准算法 std::remove 更简单地执行任务

例如

#include <algorithm>
#include <cstring>
//...

*std::remove( text, text + std::strlen( text ), letter ) = '\0';

关于c++ - 从 char 数组中删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133594/

相关文章:

java - 用于测量字符串相等程度的算法/库

c++ - C++算术中的错误输出

c++ - 退出全屏模式后清除屏幕?

java - 在java中生成给定方法的多次抽奖(调用)(模拟彩票)

arrays - 如何在二维数组中查找元素的索引 - Swift

Java - 遍历以 x、y 和半径为中心的 2D 圆中的所有像素?

algorithm - 闭包参数列表的上下文类型需要 1 个参数,但指定了 2 个

c++ - 在文件之间共享静态变量: namespace 与类

c++ - 在游戏编程中,导致性能消耗的特定 C++ 或 STL 功能是什么?

javascript - 将 component1 的复选框的值传递到 component2 angular 上过滤管道列表