c++ - 计算空字符单元格 C++

标签 c++ arrays algorithm isnullorempty

看在老天爷的份上,这看起来是一段非常简单的代码,我只是想不出我哪里出错了。

int count = 0;
 for (int i = 0; i<10;i++){
    if (chararray[i]=='\0' && i == 0){
        cout << "Empty \n";
        break;
    }
    if (chararray[i]!='\0') {
        count = count ++;
    }
 }
cout << "Deleted " << count << "elements \n";

所以基本思想是它遍历数组,如果它为空,则返回“空”,如果不是,则计算所有非空单元格并返回它们的数量。如果它有任何不同,我将把它放在解构方法下。

通常它工作正常,它只是不会正确计数。它要么全部计数,要么不计数。


更新!

谢谢大家!我用 ++count 删除了 count = count++ 行,它显示的结果比以前更正确,但不是所有测试值(我保证不会犯同样的错误再次)。事实上,我接受了使用 strlen 函数的建议,因为没有特定需要用 0 代替,好吧,什么都没有。它还使代码短得多。谢谢!

最佳答案

您将问题命名为

count empty char cells c++

然而,正如在代码片段中看到的那样,当数组的元素不等于 '\0' 时,计数会增加

if (chararray[i]!='\0') {
    count = count ++;
}

那么您要计算的空字符单元是什么?

考虑到这个声明

    count = count ++;

具有未定义的行为,因为应用运算符++ 的副作用未相对于左操作数赋值排序。

如果数组包含一个字符串,并且您想知道它是否为空以及字符串中有多少个字符,那么您应该使用标准 C 函数 strlen

如果数组不包含字符串并且值为 '\0' 的元素可以在数组的任何位置,那么 tp 计数非零元素你应该使用标准算法 std::count_if

例如

#include <algorithm>
#include <functional>

//..

int n = std::count_if( chararray, chararray + 10, 
                       std::bind2nd( std::not_equal_to<char>(), '\0' ) );

关于c++ - 计算空字符单元格 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26932554/

相关文章:

python - 如何选择 NumPy 数组中除索引序列之外的所有元素

algorithm - 基本优化——配对小部件和转子

c++ - C/C++ time_t(以微秒为单位)

c++ - 错误:没有匹配函数来调用...(std::string&)

c++ - 区别: std::make_unique<char>(size_t size) 和 std::make_unique<char[]>(size_t size)?

algorithm - 增量文档相似度算法

javascript - 如何正确显示盒子? (算法、用户界面)

C++ 错误 : class template has already been defined

windows - 使用 Powershell 获取嵌套 OU

c - 数组的区别和名称