簡體   English   中英

無法將向量輸出到.txt文件

[英]Trouble outputting vector to .txt file

我已經為此苦苦掙扎了一段時間,終於可以尋求幫助了。 我正在通過readData函數從文本文件中讀取數據。 在該函數中,我正在調用ELement類的函數以將Element數據讀入向量的向量。 然后,我試圖通過writeData函數將數據寫入文本文件,這就是我的問題所在。 當我編譯並運行時,輸出文件包含除元素數據之外我正在寫入的所有其他數據。 我還需要能夠通過其他功能訪問此Element數據。

任何幫助,技巧或見解將不勝感激。 我在下面包括了我相信的相關代碼。 如果有必要,請告訴我。

謝謝!

readData函數:

void readData::readdata(ifstream &inp)
{

    Element r;

    r.addelementdata(inp);

};

addelementdata功能:

void Element::addelementdata(istream& inp) 
{
    int i,j,tmp;

    for (i = 0; i < d_numElems; i++)
    {
        vector<int>row;
        for (j = 0; j < 10; j++)
        {
            inp >> tmp;
            row.push_back(tmp);

        }
    elems_matrix.push_back(row);
    }

}

輸出矩陣內容功能:

void Element::Elems_matrix_contents(ofstream& out)
{
    int i, j;

    for (i = 0; i < d_numElems; i++)
    {
        for (j = 0; j < 10; j++)
        {
            out << elems_matrix[i][j] << '\t';
        }
    }
}

元素類別:

class Element: public readData
{
protected:
    std::vector< std::vector<int> > elems_matrix;

public:
    // Constructors
    Element();

    //Destructor
    ~Element(){};
    // Functions
    void addelementdata(istream&inp);

    std::vector<std::vector < int >> elems_matrix_copy;

    void Elems_matrix_contents(ofstream& out);

};

readData類別:

class readData 
{
public:

    readData();

    ~readData(){};

    void readdata(ifstream &inp);
    void writedata(ofstream &out);

};

writeData函數:

void readData::writedata(ofstream &out)
{

    out << "ELEMENT  " << "Material  " << "Nodes:  "<< endl;

    Element r;

    r.Elems_matrix_contents(out);

    out << "*******************************************************************" << endl << endl;
};

問題是您創建了Element類型的局部變量並將數據讀入其中。 由於它是本地的,因此在函數末尾被銷毀:

void readData::readdata(ifstream &inp)
{

    Element r; // this will die at end of function

    r.addelementdata(inp);

};

與您的writedata()函數相同。 您創建一個全新的(空) Element並輸出:

void readData::writedata(ofstream &out)
{

    out << "ELEMENT  " << "Material  " << "Nodes:  "<< endl;

    Element r; // completely new contains nothing

    r.Elems_matrix_contents(out);

    out << "********************************************" << endl << endl;
};

也許您應該使Element r成為類readData的成員?

class readData
{
    Element r; // now all functions can use the same Element

    // ... blah blah blah
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM