a59288 发表于 2022-5-2 06:14:33

栈中的数据可以以文件的形式存储下来吗

想请问一下各位大佬栈中的数据可以以文件的形式存储下来吗,保存下来并且可以重新加载,如果可以的话麻烦大佬给一个实现思路万分感谢

wp231957 发表于 2022-5-2 07:58:48

这样说,感觉狠模糊,你需要举个例子

a59288 发表于 2022-5-2 14:43:22

wp231957 发表于 2022-5-2 07:58
这样说,感觉狠模糊,你需要举个例子

比如说我要写一个画板,要实现撤销功能,还要实现把绘图的过程,保存下来并且能重新加载在文件中,加载后还可以撤销或者继续绘画的步骤,我想用栈来实现{:10_269:}

人造人 发表于 2022-5-2 16:10:09

#include <iostream>
#include <stack>
#include <fstream>
#include <string>

using std::stack;
using std::string;
using std::ifstream, std::ofstream;
using std::ios_base;
using std::cout, std::endl;

template<typename T>
void save(const string &filename, stack<T> s) {
    stack<T> temp;
    while(!s.empty()) {
      temp.push(s.top());
      s.pop();
    }
    ofstream os(filename, ios_base::out | ios_base::binary);
    size_t size = temp.size();
    os.write((const char *)&size, sizeof(size));
    while(!temp.empty()) {
      os.write((const char *)&temp.top(), sizeof(temp.top()));
      temp.pop();
    }
}

template<typename T>
void load(const string &filename, stack<T> &s) {
    ifstream is(filename, ios_base::in | ios_base::binary);
    if(!is) return;
    //s.clear();
    s = stack<T>();
    size_t size;
    is.read((char *)&size, sizeof(size));
    for(size_t i = 0; i < size; ++i) {
      T value;
      is.read((char *)&value, sizeof(value));
      s.push(value);
    }
}

int main() {
    {
      stack<size_t> sa;
      for(size_t i = 3; i < 8; ++i) {
            sa.push(i);
      }
      save("stack.dat", sa);
      stack<size_t> sb;
      load("stack.dat", sb);
      cout << (sa == sb ? "true" : "false") << endl;
      sa.push(1234);
      cout << (sa == sb ? "true" : "false") << endl;
    }
    {
      stack<double> sa;
      for(size_t i = 3; i < 8; ++i) {
            sa.push(i + 3.14);
      }
      save("stack.dat", sa);
      stack<double> sb;
      load("stack.dat", sb);
      cout << (sa == sb ? "true" : "false") << endl;
      sa.push(1234.4321);
      cout << (sa == sb ? "true" : "false") << endl;
    }
    return 0;
}

a59288 发表于 2022-5-2 21:12:29

人造人 发表于 2022-5-2 16:10


非常感谢大佬,就是我用的是c#,需要一定的时间研究一下c++,万分感谢{:10_254:}
页: [1]
查看完整版本: 栈中的数据可以以文件的形式存储下来吗