0
私はファイルを読み込み、構造体型のベクトルにデータを格納しています。私は3つの異なる機能を持っています:struct型のベクトルは渡しますが、コンソール出力は行いません
- readFile(
insert arg here
)//テキストファイルを読み込んで、その週を通して働いた名前と時間を取得します。 - バブルソート( `以上のarg ')//自明
- 出力(`引数')//前記ベクター
関数プロトタイプの出力内容:
void readFile(vector<Employee *> workers, int numOfEmployees);
void bubbleSort(vector<Employee *> workers, int numOfEmployees);
void output(vector<Employee *> workers, int numOfEmployees);
構造体:
struct Employee
{
string name;
vector<int> hours;
int totalHours;
}
メイン:
vector<Employee *> workers;
int numOfEmployees = 0;
readFile(workers, numOfEmployees);
bubbleSort(workers, numOfEmployees);
output(workers, numOfEmployees);
cout << endl;
system("pause");
return 0;
readFileの:
ifstream fin;
fin.open("empdata4.txt");
if (fin.fail())
{
cout << "File failed to open. Program will now exit.\n";
exit(1);
}
fin >> numOfEmployees;
workers.resize(numOfEmployees);
for (int row = 0; row < numOfEmployees; row++)
{
workers[row] = new Employee;
workers[row]->hours.resize(7);
fin >> workers[row]->name;
for (int i = 0; i < 7; i++)
{
fin >> workers[row]->hours[i];
}
}
//
出力明白な理由のために、バブルソートを除く:
for (int i = 0; i < numOfEmployees; i++)
{
cout << workers[i]->name << " ";
for (int x = 0; x < 7; x++)
{
cout << workers[i]->hours[x] << " ";
}
cout << endl;
}
コンソール出力が空白で、マイナス私は私だと思うメインでcout << endl;
とsystem("pause");
をほとんどの場合、すべてを正しく設定しますが、私はまだ分かりません。助けてくれてありがとう!
EDIT:参照&なく追加の関数プロトタイプと
void readFile(vector<Employee *>& workers, int& numOfEmployees);
void bubbleSort(vector<Employee *>& workers, int& numOfEmployees);
void output(vector<Employee *>& workers, int& numOfEmployees);
へ
は、[最小、***完全***、かつ検証例](http://stackoverflow.com/を作成してみてください呼び出しますヘルプ/ mcve)を使用してください。関数ヘッダー(宣言)を含む。実際に関数の宣言がここで重要です! –
関数の宣言では、問題は明らかです。ベクトル*を値*に渡します。これは、ベクターがコピーされ、オリジナルではなくコピーでのみ動作することを意味します。私はあなたに[良い初心者の本をいくつか入手してください](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)、* reference *で引数を渡すことについてお読みください。 –
入力ファイルはどのようなものですか?これがなければ、どこが間違っているのか判断できません。 –