我有四组文本文件,每组都包含不同的单词。
noun.txt 有 7 个单词 Article.txt 有 5 个单词 verb.txt 有 6 个单词 Preposition.txt 有 5 个单词
在下面的代码中,在我的第二个 for 循环中,一个计数数组跟踪我读入了多少单词以及从哪个文件中读取。例如。count[0] 应该是 5 个世界,但是 count[1] 有 8 个单词但应该是 7 个。我回去检查文本文件,我没有弄错,它有 7 个单词。这是 ifstream 行为方式的问题吗?
我也被告知 eof() 不是好的做法。在准确读取数据方面,行业中的最佳实践是什么?换句话说,除了 !infile.eof() 之外,我还能使用更好的东西吗?
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cctype>
#include <array> // std::array
using namespace std;
const int MAX_WORDS = 100;
class Cwords{
public:
std::array<string,4> partsOfSpeech;
};
int main()
{
Cwords elements[MAX_WORDS];
int count[4] = {0,0,0,0};
ifstream infile;
string file[4] = {"Article.txt",
"Noun.txt",
"Preposition.txt",
"verb.txt"};
for(int i = 0; i < 4; i++){
infile.open(file[i]);
if(!infile.is_open()){
cout << "ERROR: Unable to open file!\n";
system("PAUSE");
exit(1);
}
for(int j = 0;!infile.eof();j++){
infile >> elements[j].partsOfSpeech[i];
count[i]++;
}
infile.close();
}
ofstream outfile;
outfile.open("paper.txt");
if(!outfile.is_open()){
cout << "ERROR: Unable to open or create file.\n";
system("PAUSE");
exit(1);
}
outfile.close();
system("PAUSE");
return 0;
}