私はなぜ情報を失うのだろうかと思っていました。ベクトルに要素を追加する
これまで3つの機能があります。
オプション処理関数と、テキストファイルを読み込むためのものと、同じベクトルにユーザー指定を追加するものの2つのベクトル関数です。
私はファイルを読み込んでその内容をベクトルに保存し、次のオプションを選択して仕様を追加します。これを行うには、私はpush_backを使用します。私は出力(またはデバッグ)して、私が成功したかどうかを確認します。はい。だから私は、ファイルを再度読み取るオプションを選択し、私はどこに私は開始した。ユーザーの仕様が失われました。私はそのオプションを入力するたびにそれを割り当てているので、私はそれを考える。
私のコードはほとんどのプログラミング標準に準拠していません。
Heresカンマで区切られたfeildを分離し、構造体のvaraiblesに保存してから、ファイルの各行の要素としてベクターに保存した最初の関数です。
vector<sStruct> * loadFile(char *myTextFile)
{
myStruct
sStruct;
vector<myStruct>
vectorAddress,
*vectorData = new vector<myStruct>
string
feild1, feild2, feild3, feild4;
ifstream
*inFile = new ifstream;
inFile->open(myTextFile, ios::in);
if (!inFile->good())
{
cout << "? File Doesnt Exist! " << endl;
}
while (!inFile->eof())
{
getline(*inFile, feild1, ',');
sStruct.m_1 = field1;
getline(*inFile, feild2, ',');
sStruct.m_2 = field2;
getline(*inFile, field3, ',');
sStruct.m_3; = feild3
getline(*inFile, feild4);
sStruct.m_4 = feield4;
vectorData->push_back(sStruct);
}
inFile->clear();
inFile->close();
cout << vectorData->size();
delete inFile; // allocated obj delete to fast why bother?
return vectorData;
}
この関数は、ベクトルに別の要素を追加するのに成功します。
vector<sStruct> * addElement(vector<sStruct> *vAddElement)
{
sStruct addElement; // referring to the same struct.
cout << "Enter a String: ";
cin >> addElement.feild1
vAddElement->push_back(addElement);
cout << vAddElement->size() << endl;
return vAddElement;
}
最初の関数では、私はベクトルオブジェクトをデバッグし、ファイルからのデータを保存します。 OK。だから次の関数に行き、最初のfeildを持つ構造体メンバに文字列を追加します。うまくいけば何も上書きしないでください。私はデバッグするためにデバッグして、そのすべての良い、push_backはうまく動作します。しかし、私が最初の機能に行くとき。すべてが始まったときと同じように戻ってきます。
私はそのファイルを読んでいるので、私は知っていると私はその関数を入力するたびに割り当てる。これを防ぐ方法はありますか?
あなたはたぶんベクトルの異なるインスタンスになりがちです。上記の関数を呼び出すコードは何ですか? – sharptooth