テキスト ファイルを読み込んで、その内容を構造体のベクトルにインポートしようとしています。
ここに私の定義があります
typedef struct
{
string pcName, pcUsername, pcPassword, pcMessage, pcAdvertisement; //I know that
//this is incorrect convention. It was originally a char*
}
ENTRY;
vector<ENTRY> entries;
fstream data;
ここに私の表示データ関数があります
void DisplayData()
{
std::cout << (int)(entries.size() / 5) <<" entries" << endl;
for(int i = 1; i <=(int)entries.size()/5; i++)
{
cout << endl << "Entry " << i << ":" << endl
<< "Name: " << entries[i].pcName << endl
<< "Username: " << entries[i].pcUsername << endl
<< "Password: " << entries[i].pcPassword << endl
<< "Message: " << entries[i].pcMessage << endl
<< "Advertisement: " << entries[i].pcAdvertisement << endl;
}
}
ここに私の Load Data 関数があります
bool LoadData(const char* filepath)
{
std::string lineData ;
int linenumber = 1 ;
data.open(filepath, ios::in);
ENTRY entry_temp;
if(!data.is_open())
{
cerr << "Error loading file" << endl;
return false;
}
while(getline(data, lineData))
{
if(linenumber==1) {entry_temp.pcName = lineData;}
else if(linenumber==2) {entry_temp.pcUsername = lineData;}
else if(linenumber==3) {entry_temp.pcPassword = lineData;}
else if(linenumber==4) {entry_temp.pcMessage = lineData;}
else if(linenumber==5) {entry_temp.pcAdvertisement = lineData;}
entries.push_back(entry_temp);
if(linenumber == 5)
{
linenumber = 0;
}
linenumber++;
}
data.close();
puts("Database Loaded");
return true;
}
読み込んでいるテキストファイルは次のとおりです。
Name1
Username1
Password1
Message1
Ad1
load data を呼び出した後の表示データ関数の結果は次のとおりです。
1 entries
Entry 1:
Name: Name1
Username Username1
Password:
Message:
Advertisement:
ご覧のとおり、最初の 2 つはロードされますが、最後の 3 つはロードされません。ベクトルの代わりに配列を使用してこれを行ったとき、うまく機能したので、何が間違っているのかわかりません。ありがとう。