数据文件处理-查找文件中的字数
Data File Handling - find count of word in file
我有一个家庭作业问题:
用C++编写一个函数,计算文本文件中单词">do"的存在。
我尝试过的内容:
我试着首先在文本文件中搜索单词">d",然后搜索">o(如果紧随其后)"。
#include <iostream>
#include <fstream>
using std::fstream;
using std::cout;
using std::ios;
int main()
{
char ch[10];
int count=0, a=0;
fstream f;
f.open("P.txt", ios::in);
while(!fin.eof())
{
fin.get(ch)
if (ch[a]=='d')
{
if ((a++)=='o')
count++;
}
a++;
}
cout << "the no of do's is" << count;
f.close();
}
但是这个想法完全没有用。我想不出其他想法了。我很想在两种情况下对此有一个提示:
1.计算独立存在的单词do。
2.计算文本中出现的单词do。
这是一个数据文件处理问题。
算法遵循您所拥有的。像这样构建while循环:
while(!fin.eof()) {
bool found = false;
do {
fin.get(ch);
found = found || ch == 'd';
} while (ch == 'd' && fin);
if (found && ch == 'o') {
// boom goes the dynamite
}
}
do-while
的目的是消除重复的d
,这样在循环之后,只需检查下一个字符是否为o
。
备注
- 就类型而言,
ch
的类型应该是char ch
解释
while(!fin.eof())
- 重复接下来的几行,直到我们到达文件的末尾
do {
do-while
循环的开始
fin.get(ch);
- 从文件中读取单个字节(字符)
found = found || ch == 'd';
- 如果我们已经找到
d
或当前字符是d
,请将found
设置为true
- 如果我们已经找到
} while (ch == 'd' && fin);
do-while
结束。重复循环,直到读取的最后一个字符不是d
,或者到达文件末尾
if (found && ch == 'o') {
- 如果我们能够满足将
found
设置为true的条件,并且我们读取的最后一个字符是o
- 如果我们能够满足将
// boom goes the dynamite
- 那么我们已经成功地找到了单词
do
- 那么我们已经成功地找到了单词
Sansstd::ios::eof
我下一步不会对此进行解释,但它将与我已经发布的内容密切相关。这里的目标是保护自己不读取已经空的文件。
while(fin >> ch) {
while(ch == 'd' && fin.get(ch)) {
if (ch != 'd') {
if (ch != 'o') {
break;
}
// Found it!
}
}
}
相关文章:
- 在C++中查找文件
- 在UNIX系统中使用DIR查找文件的字节大小
- 使用gcc从静态链接的文件中查找可选符号
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在文件中查找字节序列
- FFMpeg库:如何在音频文件中精确查找
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- g++ -I 和 -L 命令来查找不起作用的 .hpp 文件
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 从文件中查找单词并替换到其他文件中
- 如何从文本文件中查找最常见的字母和出现次数?
- 在代码块中查找输出文件
- 在终端中运行可执行文件与在Mac查找器中打开
- 在链接可执行文件之前查找静态库未解析的依赖项
- 在 elf 文件中查找全局变量的位置
- 在目录中查找所有.cpp.h文件(include,src等)的传统方法
- 查找第一个文件/查找下一个文件不返回文件夹中的所有文件
- C++/哪个文件查找顺序更快
- 在内存中创建gzip文件查找CPP示例
- 使用c++和文件查找曲线下的面积