私は C++ の非常に初心者であり、現在、次のような行が大量にある入力ファイルからデータを処理する必要があります。
2012019109 Proadan Legeaf Coaa 女性 65
これらは、学生番号、名前 (2 ~ 3 語)、性別、およびテストの点数です。
これらの属性ごとに配列を作成する必要があります。また、入力ファイルに含まれる行数 (最大 100,000) はわかりませんが、入力ファイル内の最初の数字がそのファイルの行数になります。
配列を設定したら、関数を実装して Name のアルファベット順 (昇順) にレコードを並べ替え、出力ファイルに出力する必要があります。
次の方法で最初の部分(配列の設定)を試しましたが、間違っているようです:
ifstream fin;
ofstream fout;
fin.open("input.txt");
fout.open("output.txt");
if (fin.fail()) {
cout << "Fail to open inout.txt" << endl;
exit(1);
}
int x;
fin >> x; //this is the first number within the input text file, indicating the number of lines in the file. I would use this to determine the size of the arrays:
int UID [x];
string name [x];
string gender [x];
int score [x];
int y = 0;
// In the following part, I am trying to extract the information into the different arrays, one by one, increasing the number of the element from 0 up till x. Complier error says no matching function for call for the UID and score lines.
while (y!=x, y++) {
getline(fin, UID [y], '\t');
getline(fin, name [y], '\t');
getline(fin, gender [y], '\t');
getline(fin, score [y], '\t');
break;
}`
これらの配列を取得したら、アルファベット順に並べる方法を見つける必要がありますが、これらの最初の手順でも行き詰まっています。おそらくおわかりのように、私はプログラミングについてあまり知りません。何か助けていただければ幸いです。
編集: これまでのコメントとヘルプに感謝します。お時間をいただき、誠にありがとうございます。私の問題は、これは学校でのプロジェクト作業のためであるため、配列を使用する必要があることです (説明できない理由で)。
参考までに、入力ファイルでは、番号/名前/性別/点数がタブ('/t')で区切られています。
配列に固執し、ベクトルやマップを使用せずに上記の問題を回避する方法はありますか?