看在老天爷的份上,这看起来是一段非常简单的代码,我只是想不出我哪里出错了。
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/