我正在尝试打开一个文本文件并尝试计算文件中的字符和单词的数量,我创建了“while(!infile.eof());”以扫描整个文件直到结束。然而,只有一个功能正常工作,而另一个也打印出与第一个相同的答案。
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
ifstream infile;
infile.open("tomorrow.txt");
int count1_char = 0;
int count2_word = 0;
while (!infile.eof())
{
{
char ch;
infile.get(ch); //number of characters
count1_char++;
}
{
char word[30];
infile >> word; //numner of words
count2_word++;
}
}
cout << " the number of characters :" << count1_char << endl;
cout << " the number of words :" << count2_word << endl;
infile.close();
return 0;
}
输出: 字符数:17 单词数:17 按任意键继续 。 。
答案 0 :(得分:5)
由于单词由字符组成,因此您无法分别读取字符和单词。您应采取以下两种方法之一:
第一种方法的优点是简单;第二种方法的优点是能够正确计算空白字符。
第二种方法要求您保持一个“状态”,以便您区分当前字符是新单词的一部分还是先前找到的单词的延续。一个简单的标志就足够了。您将有一个循环逐个读取字符,将每个字符分类为空格或非空格(例如,使用std::isspace
函数),增加字符数,并执行以下三项操作之一: