我試圖解決練習22(第4章)在C++的思考,但有些東西我失蹤了,因爲也經過幾天的工作,我的解決方案沒有做它的工作。我不太喜歡在解決練習時尋求幫助,但在這一刻我感到不知所措。動態堆棧分配
創建一個存放Stashes的堆棧。每個Stash將從輸入文件中保存五行 。使用新的創建Stashes。讀取一個文件到 您的堆棧,然後重新打印它的原始形式從提取它從 堆棧。
#include "CppLib.h"
#include "Stack.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
//typedef unsigned int uint;
int main() {
ifstream in("main.cpp");
Stack stackStashes;
stackStashes.initialize();
Stash linesStash;
linesStash.initialize(sizeof(char) * 80);
string line;
bool flag = true;
while (flag) {
for (int i = 1; flag && (i <= 5); i++)
if ((flag = (bool)getline(in, line)))
linesStash.add(line.c_str());
if (flag) {
stackStashes.push(new Stash(linesStash));
linesStash.cleanup();
linesStash.initialize(sizeof(char) * 80);
}
}
Stash* s;
char* cp;
int z = 0;
while ((s = (Stash*)stackStashes.pop()) != 0) {
while ((cp = (char*)s->fetch(z++)) != 0)
cout << "s->fetch(" << z << ") = "
<< cp << endl;
delete s;
}
s->cleanup();
stackStashes.cleanup();
return 0;
}
我試着用向量解決它,而無需使用標誌的,我所有的解決方案返回一個錯誤。而且,在我的所有實驗中,情況都更糟,但是唯一剩下的就是這個。
以下是本書提供的圖書館。以下所有代碼均由Bruce Eckel編寫。
CppLib.cpp,CppLib.h, Stack.cpp,Stack.h,require.h。
而錯誤是?我認爲這是我今天第四次或第五次說,今天只有10:49。 –
它不起作用?當您嘗試運行控制檯時,會回退一些行,然後窗口會終止該線程。 – Overflowh
@sftrabbit這意味着你已經起得太早:) – jrok