首页 > 其他分享 >实验六:模板类和文件

实验六:模板类和文件

时间:2022-11-30 21:22:36浏览次数:39  
标签:std 文件 int Vector 实验 include out 模板 size

w实验任务三

task3_1.cpp

#include<iostream>
#include<fstream>
#include<array>
#define N 5
int main(){
    using namespace std;
    array<int,N> x{97,98,99,100,101};
    ofstream out;
    out.open("data.txt",ios::binary);
    if(!out.is_open()){
        cout<<"fail to open data1.dat\n";
        return 1;
    }
    out.write(reinterpret_cast<char *>(&x),sizeof(x));
    out.close();
} 

task3_2.cpp

#include<iostream>
#include<fstream>
#include<array>
#define N 5
int main(){
    using namespace std;
    array<char,N>x;
    ifstream in;
    in.open("data.dat1",ios::binary);
    if(!in.is_open()){
        cout<<"fail to open data1.dat\n";
        return 1;
    }
    in.read(reinterpret_cast<char *>(&x),sizeof(x));
    in.close();
    for(auto i=0;i<N;i++)
    cout<<x[i]<<",";
    cout<<"\b\b\n";
}

 

 

 

 

 

 97的ASCLL码值是a,而文件里输入的x是整型,占4个字符,转换成char字符时,a只占1个字符,而多出来3个字符变成空格,98ASCLL码值为b,所以结果如图所示。

实验任务四

task4.cpp

#include<iostream>
#include"vector.h"
void test(){
    using namespace std;
    int n;
    cin>>n;
    Vector<double> x1(n);
    for(auto i=0;i<n;i++)
    x1.at(i)=i*0.6;
    
    output(x1);
    
    Vector<int> x2(n,88);
    Vector<int> x3(x2);
    
    output(x2);
    output(x3);
    
    x2.at(0)=66;
    output(x2);
    
    x3[0]=666;
    output(x3);
}
int main(){
    test();
}

vector.hpp

#pragma once
#include<iostream>
using namespace std;
template<typename T>
class Vector{
    public:
        Vector(int n):size{n}{
        value=new T[n];        
        }
        Vector(int n,T v):size{n}{
        value=new T[n];
        for(int i=0;i<n;i++)
        value[i]=v;
        }
        Vector(const Vector<T> &a):size{a.size}{
            value=new T[size];
            for(int i=0;i<size;i++)
            value[i]=a.value[i];
        }
        T &operator[](int i){
            return value[i];
        }
        int get_size() const{
        return size;
        }
        T &at(int index){
            return value[index];
        }
        friend void output(const Vector<T> &a){
        for(int i=0;i<a.size;i++)
        cout<<a.value[i]<<",";
        cout<<"\b\b\n";
        }
    private:
        int size;
        T *value;
};

 

 

 实验任务五

task5.cpp

#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
void output(std::ostream &out){
    string a[27][27]={" "};
    int n = 0;
    for(int i=1;i<27;i++){
        a[i][0]=to_string(i);
        a[0][i]=97+n;
        n++;
    }
    for(int i=1;i<27;i++){
        n=i;
        for (int j=1;j<27;j++){
            if(65+n>90)
            {
                a[i][j]=65+n-26;
            }
            else{
                a[i][j]=65+n;
            }
            n++;
        }
    }
    for(int i=0;i<27;i++){
        for(int j=0;j<27;j++){
            cout<<setw(2)<<a[i][j]<<" ";
            out<<setw(2)<<a[i][j]<<" ";
        }
        cout<<endl;
        out<<endl;
    }
}
int main(){
    ofstream out;
    out.open("cipher_key.txt",ios::out);
    if(!out.is_open()){
        cout<<"fail to open cipher_key.txt\n";
        return 1;
    }
    output(out);
    out.close();
}

 

 

 

标签:std,文件,int,Vector,实验,include,out,模板,size
From: https://www.cnblogs.com/wanglaich/p/16939786.html

相关文章