それぞれ異なる単語を含む 4 セットのテキスト ファイルがあります。
noun.txt には 7 つの単語が含まれます Article.txt には 5 つの単語が含まれます verb.txt には 6 つの単語が含まれ、Preposition.txt には 5 つの単語が含まれます
以下のコードでは、2 番目の 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;
}