私のCMPTクラスのラボ割り当てに問題があります... 2つの単語と1つの文字列を持つテキストファイルを読み込もうとしています1行につき番号を付けることができます。ファイルは誰でも作成できます。C++の構造体に単語ごとに.txtファイルを読み込む
の例では、私は、各行別の「学生」を行う必要があり
Xiao Wang 135798642
Lucie Chan 122344566
Rich Morlan 123456789
Amir Khan 975312468
Pierre Guertin 533665789
Marie Tye 987654321
あるので、私はそうするように構造体を使用して考えていたが、私は私が必要とすることを行う方法がわかりません最初と最後とID番号は別々にする必要があります。
struct Student{
string firstName;
string secondName;
string idNumber;
};
個別に各単語を読み込むために行わ試行のすべてが失敗した(全体ではなく、ラインを読み終わった)と私は穏やかに不満を取得しています。
@Sylenceの助けを借りて、私は各行ごとに別々に読むことができました。私はまだ空白で行を分割する方法と混同されています。 ifstreamに分割機能はありますか? シリレンス、 'パーツ'は配列になりますか?あなたが[]でインデックスを持っているのを見ました。 students.add(stud)
はどういうことをしていますか? 私のコードは、これまでのところです:
int getFileInfo()
{
Student stdnt;
ifstream stdntFile;
string fileName;
char buffer[256];
cout<<"Please enter the filename of the file";
cin>>filename;
stdntFile.open(fileName.c_str());
while(!stdFile.eof())
{
stdFile.getLine(buffer,100);
}
return 0;
}
このgetFileInfoの私の修正と最終版()、データを読み込むための簡単かつ迅速な方法のために、Shahbazあなたに感謝です。
void getFileInfo()
{
int failed=0;
ifstream fin;
string fileName;
vector<Student> students; // A place to store the list of students
Student s; // A place to store data of one student
cout<<"Please enter the filename of the student grades (ex. filename_1.txt)."<<endl;
do{
if(failed>=1)
cout<<"Please enter a correct filename."<<endl;
cin>>fileName;
fin.open(fileName.c_str());// Open the file
failed++;
}while(!fin.good());
while (fin >> s.firstName >> s.lastName >> s.stdNumber)
students.push_back(s);
fin.close();
cout<<students.max_size()<<endl<< students.size()<<endl<<students.capacity()<<endl;
return;
}
ここで混乱しているのは、入力されたデータにアクセスする方法です。私はそれがベクターに入れられたことは知っていますが、ベクトルの個々のスペースにアクセスするにはどうすればいいのですか? Visual Studioが何を出力するかわからないので、ベクトルの場所を調べようとするとエラーが発生します。
申し訳ありませんが、txtファイルへのリンクが機能しませんでした。 – b3orion
あなたは何をしようとしましたか?一緒にお手伝いできるよう努力してください。 – Bart
申し訳ありません..クイック返信いただきありがとうございます。私はこれまでのことを喜んで紹介しますが、このコメントボックスにコードの書式を設定する方法を理解することはできません。私はちょうどそれのまわりにアポストロフィや[コード]か何かを置くのですか?無能になって申し訳ありません。 – b3orion