c++计数数字和字符
C++ count digits and characters
我对c++很陌生,我需要写一个程序,可以计算数字,字符,空格符号和其他符号的数量。我决定从数数字开始。这是我到目前为止的代码:
int main() {
int n = 0;
int numb = 0;
ifstream read("Data.txt");
n = symbCounter(n, read);
numb = numbCounter(n, read, numb);
cout << numb; // this is for quick testing
return 0;
}
int symbCounter(int &n, ifstream &read) {
char ch;
while (!read.eof()) {
read.get(ch);
n++;
}
return n;
}
int numbCounter(int &n, ifstream &read, int counter) {
char sk[n];
for (int i = 0; i < n; i++) {
read.get(sk[i]);
if (sk[i] == '1' || sk[i] == '2' || sk[i] == '3' || sk[i] == '4' || sk[i] == '5' || sk[i] == '6' || sk[i] == '7' || sk[i] == '8' || sk[i] == '9' || sk[i] == '0')
counter++;
};
return counter;
}
但是控制台给我的值是0。我做错了什么?如何只计算字符,不包括数字或空格?
您可以使用<cctype>
标头中定义的函数,如
isalpha()
isblank()
iscntrl()
isdigit()
isspace()
等来检查特定类型的字符。
在symbCounter
方法中,您从头到尾读取文件。当您尝试从numbCounter
方法中的文件中读取时,对read
的调用将返回EOF
,因为您位于文件的末尾。你可以通过调用
read.seekg(0);
您需要返回numCounter的文件开头;
后面int numbCounter(int &n, ifstream &read, int counter) {
添加read.clear();
read.seekg(0, ios::beg);
相关文章:
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何检查一个c++字符串中有多少相同的字符/数字
- 当我输入字符类型的数字时,为什么我无法获得整数?
- scanf() 只取数字作为输入,避免使用其他字符
- 递归形成字符串中所有数字字符的中间和?
- 首先按给定顺序打印所有数字,然后使用 Array 打印所有字符和其他符号
- 如何在 getline 中删除/忽略超过特定数字的字符?
- C++输出奇怪的字符而不是数字 (Windows)
- 为什么strlen(s)与s的大小不同,为什么cout-char显示的是字符而不是数字
- 如何在C++中有效地将数字值重新分配给字符数组
- 我应该以字符形式存储数字以节省内存吗?
- C++ 从 std::string 中删除所有非数字字符
- 在c++中读取文件时,它如何自动将字符放入字符数组,将数字放入整数变量
- 不反转数字的字符反转
- 如何检查字符串是否包含所有这些:数字、字母和特殊字符
- 如果是数字或字符,请检查输入
- 如何将字符更改为数字?
- 生成随机字符/数字
- 如何将 std::string 中的所有非字母字符(数字和特殊字符)替换为空格
- 字符数字 ['0'.."9'] 需要具有连续的数值吗?