统计字数的函数定义
Function definition to count number of words
编写一个函数定义来计算文本源中一行中的单词数。
我尝试了两种不同的代码,得到了两种不同的结果
countwords()
{
ifstream file("notes.txt");
int count=0;
char B[80];
file>>B;
While (!file.eof())
{
cout<<B<<endl;
file>>B;
count++;
}
}
这给出了想要的答案。
相反:
countwords()
{
ifstream file("notes.txt");
char B[80];
int count=0;
While (!file.eof())
{
file>>B;
cout<<B<<endl;
count++;
}
}
但是这样给出的答案比实际字数多了1
谁能解释一下 eof()
函数的工作原理以及这两个循环的区别?
你的答案的第二个版本总是会额外循环一次。
想一想:如果 file >> B
失败会怎样?你仍然会增加 count
.
另外,不要在 eof()
上循环,因为您通常会循环太多次。 (Why is iostream::eof inside a loop condition considered wrong?)
相反,执行以下操作:
while(file >> B)
{
std::cout << B << std::endl;
++count;
}
因为你的文件流有一个到 bool
的隐式转换来检查它的状态,如果不是 good
,则 returns 为 false。
问题不是 EOF,而是要查看它的工作情况 阅读 this。
关于您的代码,请注意第一个代码中的 file>>B;
。由于file>>B;
最后一次执行第二个代码失败,你得到的正确答案少了一个。
输出比实际字数多1的原因:第2版第一次看之前输出了B。这是对未初始化变量的使用,可能导致输出看起来像垃圾或空行的内容。不可靠的代码。
此外,我建议使用 std::string 而不是 char[80] 作为变量 B 的类型。
编写一个函数定义来计算文本源中一行中的单词数。
我尝试了两种不同的代码,得到了两种不同的结果
countwords()
{
ifstream file("notes.txt");
int count=0;
char B[80];
file>>B;
While (!file.eof())
{
cout<<B<<endl;
file>>B;
count++;
}
}
这给出了想要的答案。
相反:
countwords()
{
ifstream file("notes.txt");
char B[80];
int count=0;
While (!file.eof())
{
file>>B;
cout<<B<<endl;
count++;
}
}
但是这样给出的答案比实际字数多了1
谁能解释一下 eof()
函数的工作原理以及这两个循环的区别?
你的答案的第二个版本总是会额外循环一次。
想一想:如果 file >> B
失败会怎样?你仍然会增加 count
.
另外,不要在 eof()
上循环,因为您通常会循环太多次。 (Why is iostream::eof inside a loop condition considered wrong?)
相反,执行以下操作:
while(file >> B)
{
std::cout << B << std::endl;
++count;
}
因为你的文件流有一个到 bool
的隐式转换来检查它的状态,如果不是 good
,则 returns 为 false。
问题不是 EOF,而是要查看它的工作情况 阅读 this。
关于您的代码,请注意第一个代码中的 file>>B;
。由于file>>B;
最后一次执行第二个代码失败,你得到的正确答案少了一个。
输出比实际字数多1的原因:第2版第一次看之前输出了B。这是对未初始化变量的使用,可能导致输出看起来像垃圾或空行的内容。不可靠的代码。
此外,我建议使用 std::string 而不是 char[80] 作为变量 B 的类型。