【发布时间】:2017-03-07 22:34:52
【问题描述】:
第一次发帖。寻求调试帮助。我试图找出我的逻辑在 c++11 函数中的错误所在。目标是在文件中搜索给定字符,并记录它所在的字数、所在的行数以及它在文件中出现的总次数。行数和总出现次数是准确的,但我认为是因为我的逻辑导致的字数关闭。 lwc 是我创建的一个类,具有 int set 方法。正确计算其中包含特定字符的单词的数量我哪里错了?感谢您的宝贵时间。
void findChar(lwc *CH, string File)
{
ifstream file(File);
int a=0;
int b=0;
int c=0;
string line;
bool i = false;
bool j = false;
char ch;
while (!file.eof())
{
getline(file, line);
for (int g=0; g<line.length(); g++)
{ ch = line[g];
if (ch == CH->getChar()) //to count characters
{a++; i= true; j = true;}
if (isspace(ch) && j) //to count words
{c++; j=false;}
}
if (i) //to count lines
{b++; i = false;}
}
CH->setWords(c);
CH->setChars(a);
CH->setLines(b);
}
【问题讨论】:
-
这个单词是否可能出现在行尾,因此后面是换行符而不是空格?
-
首先,每行写多行代码是很糟糕的。
-
免费提示:使用有意义的变量名而不是
i、j等。i和j通常用作循环计数器(一种不成文的“规则”)-如果您给它们起有意义的名称,例如found_char_on_line和found_char_in_current_word,您的代码就会更清晰。 -
老兄- 感谢您的阅读!
标签: c++ function c++11 count character