嗨,我是新來的c + +,並無法理解如何推動和彈出元素讀取從文本文件到數組,並顯示這些元素以相反的順序,例如,如果我有一個文本文件名爲hero.txt與元素悟空路飛火影忍者我想輸出是路飛火影忍者悟空 這是我迄今爲止如何將從文本文件中讀取的元素壓入或彈出到C++中的數組中,並按快速轉換順序輸出堆棧?
string hero[100]; // array to store elements
int count=0;
int main()
{
fstream myfile;
string nameOffile;
string text;
string mytext;
cout << "Enter name of file" << endl;
cin >> nameOffile
myfile.open(nameOffile.c_str());
if (!myfile)
{
cerr << "error abort" << endl;
exit(1);
}
while (myfile >> text)
{
Push(mytext); //Note I know this is wrong I just don't know how to write it in a manner that will push the first element of the textfile to the top
}
myfile.close();
while(hero[count]=="")
{
//Again I know these two lines are incorrect just don't know how to implement in correct manner
cout <<hero[0] << " " <<endl;
Pop(mytext);
}
}
// Function for push
void Push(string mytext)
{
count = count + 1;
hero[count] = mytext;
}
void Pop(string mytext)
{
if(count=0)
{
mytext = " ";
}
else
{
mytext = hero[count];
count = count - 1;
}
}
見http://en.cppreference.com/w/cpp/container/stack。這是一個模板類,所以在聲明它爲'std :: stack mystack'後,你可以使用它作爲'mystack.push(mystring);'。順便說一句,你有'text'和'mytext',並且你以混合的方式使用它們。當然,它應該只是一個。 –
patatahooligan
你好,謝謝,但我想避免使用模板類,因爲我仍然是新的C++ – DaLOLZ
不幸的是,這是一個堆棧的標準實現。事實並非如此。聲明是您必須編寫的模板實例的唯一行。對於其他任何線路,它都會像其他任何類別一樣運行。如果你真的不想使用它,你可以藉此機會編寫你自己的'StringStack'類。 – patatahooligan