首页 > 其他分享 >实验6 模板类和文件I/O

实验6 模板类和文件I/O

时间:2022-11-30 23:34:07浏览次数:41  
标签:std 文件 int Vector 实验 output include 模板 size

 实验任务3

task3_1.cpp

 1 #include<iostream>
 2 #include<vector>
 3 template<typename T>
 4 void output(const T&obj){
 5     for(auto &item:obj)
 6     std::cout<<item<<", ";
 7     std::cout<<"\b\b \n";
 8 }
 9 int main()
10 {
11     using namespace std;
12     vector<int> v1;
13     vector<int> v2(5);
14     vector<int> v3(5,42);
15     vector<int> v4{1,9,8,4};
16     vector<int> v5{v4};
17     output(v2);
18     output(v3);
19     output(v4);
20     output(v5); 
21 }

task3_2.cpp

 1 #include<iostream>
 2 #include<fstream>
 3 #include<array>
 4 #define N 5
 5 int main(){
 6     using namespace std;
 7     array<int,N> x;
 8     ifstream in;
 9     in.open("data1.dat",ios::binary);
10     if(!in.is_open()){
11         cout<<"fail to open data1.dat\n";
12         return 1;
13     }
14     in.read(reinterpret_cast<char *>(&x),sizeof(x));
15     in.close();
16     
17     for(auto i=0;i<N;++i)
18         cout<<x[i]<<", ";
19     cout<<"\b\b \n";
20 }

修改之后的运行结果为:

 

 char类型一次只读取一个字节长度,int 类型占四个字符的长度,所以改为char后b会在第五个出现。

实验任务4

Vector.hpp

 1 #pragma once
 2 #include<iostream>
 3 using namespace std;
 4 template<typename T>
 5 class Vector{
 6     public:
 7         Vector(int n);
 8         Vector(int n,T value);
 9         Vector(const Vector<T> &x);
10         ~Vector();
11         int get_size(){return size;}
12         T &at(int i){return p[i];}
13         T &operator[](int i){return p[i];}
14         friend void output(Vector &x){
15             for(int i=0;i<x.size-1;i++)
16                  cout<<x.p[i]<<", ";
17             cout<<x.p[x.size-1]<<endl;
18         }
19     private:
20         int size;
21         T *p;
22 };
23 template<typename T>
24 Vector<T>::Vector(int n){
25     size=n;
26     p=new T[n];
27 }
28 template<typename T>
29 Vector<T>::Vector(int n,T value){
30     size=n;
31     p=new T[n];
32     for(int i=0;i<n;i++)
33     p[i]=value;
34 } 
35 template<typename T>
36 Vector<T>::Vector(const Vector<T> &x)
37 {
38     size=x.size;
39     p=new T[size];
40     for(int i=0;i<x.size;i++)
41     {
42         p[i]=x.p[i];
43     }
44 } 
45 template<typename T>
46 Vector<T>::~Vector()
47 {
48     delete [] p;
49 }

task4.cpp

 1 #include <iostream>
 2 #include "Vector.hpp"
 3 void test() {
 4     using namespace std;
 5     int n;
 6     cin >> n;
 7     Vector<double> x1(n);
 8     for(auto i = 0; i < n; ++i)
 9         x1.at(i) = i * 0.7;
10     output(x1);
11     Vector<int> x2(n, 42);
12     Vector<int> x3(x2);
13     output(x2);
14     output(x3);
15     x2.at(0) = 77;
16     output(x2);
17     x3[0] = 999;
18     output(x3);
19 }
20 int main() {
21     test();
22 }

运行结果:

 

 实验任务5

 1 #include<iostream>
 2 #include<iomanip>
 3 #include<string>
 4 #include<fstream>
 5 using namespace std;
 6 void output(std::ostream &out)
 7 {
 8     char a[26][26];
 9     cout<<"  ";
10     out<<"  ";
11     for(char i='a';i<='z';i++)
12     {
13         cout<<setw(2)<<setfill(' ')<<i;
14         out<<setw(2)<<setfill(' ')<<i;
15     }
16     cout<<endl;
17     out<<endl;
18     for(int j=0;j<26;j++)
19     {
20         cout<<setw(2)<<setfill(' ')<<j+1;
21         out<<setw(2)<<setfill(' ')<<j+1;
22         for(int k=0;k<26;k++)
23         {
24             a[j][k]='A'+char((j+k+1)%26);
25             cout<<setw(2)<<setfill(' ')<<a[j][k];
26             out<<setw(2)<<setfill(' ')<<a[j][k];
27         }
28         out<<endl;
29         cout<<endl;
30     }
31 } 
32 int main()
33 {
34     ofstream out;
35     out.open("cipher_key.txt",ios::out);
36     if(!out.is_open())
37     {
38         cout<<"fail to open cipher_ke.text"<<endl;
39         return 1;
40     }
41     output(out);
42     out.close();    
43 }

 

 

 

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

相关文章

  • 实验六
    实验任务3task3_1.cpp源码:1#include<iostream>2#include<fstream>3#include<array>4#defineN55intmain(){6usingnamespacestd;7......
  • 实验四 Web服务器2
    任务详情基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:Web服务器的客户端服务器,提交程序运行截图实现GET即可,请求,响应要符合HTTP协议规范服务器部署到华......
  • 实验四 Web服务器1-socket编程
    任务详情基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:time服务器的客户端服务器,提交程序运行截图echo服务器的客户端服务器,提交程序运行截图,服务器把客......
  • 实验四-Web服务器2
    一、任务详情基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.Web服务器的客户端服务器,提交程序运行截图2.实现GET即可,请求,响应要符合HTTP协议规范3.服务......
  • <2> vscode打开stm32工程头文件波浪号报错
    头文件报错解决方法现象如上图所示。解决方法:1.打开.json文件(打开方法)(1)点击右下角Win20(2)点击编辑配置(JSON)2.修改JSON文件的内容上图是未改动的内容(注释是自己加的)将内容改......
  • Python读取csv文件
    1.CSV逗号分隔值,英文全称Comma-SeparatedValues,缩写CSV,有时也称字符分隔值,因为字符分隔值也可以不是逗号,CSV文件以纯文本形式存储表格数据(数字和文本).纯文本意味......
  • 实验6
    实验内容3task3_1.cpp#include<iostream>#include<fstream>#include<array>#defineN5intmain(){usingnamespacestd;array<int,N>x={97,98,99......
  • IIS报错:未能加载文件或程序集MySql.ConnectorInstaller, Version=8.0.8.0, Culture=ne
    删除machine.config中相关配置<siteMap><providers><addname="MySqlSiteMapProvider"type="MySql.Web.SiteMap.MySqlSiteMapProvider,MySql.ConnectorInstal......
  • 实验六
    task3_1.cpp#include<iostream>#include<fstream>#include<array>#defineN5intmain(){usingnamespacestd;array<int,N>x{97,98,99,100,......
  • 【Jmeter】21天打卡 11配置元件之csv数据文件配置
    作业要求:现在有一天添加用户的接口,添加用户的数据放在csv数据文件中,实现把配置文件中的数据传到参数中使用实现步骤:1.模拟登录接口  2.模拟添加用户接口   ......