首页 > 编程语言 >实验4 现代C++标准库与类模板

实验4 现代C++标准库与类模板

时间:2023-11-27 16:47:03浏览次数:32  
标签:Info city string text void C++ 实验 include 模板

实验任务5
TextCoder.hpp

#pragma once
#include<iostream>
#include<string>

using namespace std;

class TextCoder {
public:
    TextCoder(string text0) : text{ text0 } {};

    string get_ciphertext();
    string get_deciphertext();

private:
    string text;
    void encoder();
    void decoder();
};

string TextCoder::get_ciphertext() {
    encoder();
    return text;
}

string TextCoder::get_deciphertext() {
    decoder();
    return text;
}

void TextCoder::encoder() {
    for (auto i = 0; i < text.size(); ++i) {
        if (isalpha(text[i])) {
            char base = islower(text[i]) ? 'a' : 'A';
            text[i] = char((text[i] - base + 7) % 26 + base);
        }
    }
}

void TextCoder::decoder() {
    for (auto i = 0; i < text.size(); ++i) {
        if (isalpha(text[i])) {
            char base = islower(text[i]) ? 'a' : 'A';
            text[i] = char((text[i] - base + 19) % 26 + base);
        }
    }
}
View Code

task5.cpp

#include "textcoder.hpp"
#include <iostream>
#include <string>

void test() {
    using namespace std;

    string text, encoded_text, decoded_text;

    cout << "输入英文文本: ";
    while (getline(cin, text)) {
        encoded_text = TextCoder(text).get_ciphertext();  // 这里使用的是临时无名对象
        cout << "加密后英文文本:\t" << encoded_text << endl;

        decoded_text = TextCoder(encoded_text).get_deciphertext(); // 这里使用的是临时无名对象
        cout << "解密后英文文本:\t" << decoded_text << endl;
        cout << "\n输入英文文本: ";
    }
}

int main() {  
    test(); 
}
View Code

 

实验任务6
Info.hpp

#pragma once 

#include<iostream>
#include<string>
#include <iomanip>

using namespace std;
class Info{
public:
    Info(string nickname0, string contact0, string city0, int n0);
    ~Info()=default;

    void print() const;
    
private:
    string nickname,contact,city;
    int n;
};

Info::Info(string nickname0, string contact0, string city0, int n0)
{
    nickname = nickname0;
    contact = contact0;
    city = city0;
    n=n0;
}

void Info::print() const
{
    cout << "昵称:     " << nickname << endl;
    cout << "联系方式:     " << contact << endl;
    cout << "所在城市:     " << city << endl;
    cout << "预定参加人数:     " << n << endl;
}
View Code

task6.cpp

#include "Info.hpp"
#include<iostream>
#include<string>
#include <vector>

using namespace std;

int main()
{
    const int capacity=100;
    vector<Info> audience_info_list;
    
    cout << "录入信息:" << endl;
    cout << endl;
    cout << "昵称     联系方式(邮箱/手机号)     所在城市     预定参加人数     " << endl;
    char choice;
    int sum=0;
    string name, contact, city;
    int n;
    while(cin >> name >> contact >> city >> n)
    {
        sum+=n;
        
        if(sum > capacity)
        {
            sum-=n;
            cout << "对不起,只剩" << capacity-sum << "个位置" << endl;
            cout << "1.输入u,更新(update)预定信息" << endl
                 << "2.输入q, 退出预定" << endl
                 <<"你的选择: ";
            cin >> choice;
            
            if(choice=='u')
            {
                cin >> name >> contact >> city >> n;
                Info a(name,contact,city,n);
                audience_info_list.push_back(a);
                sum+=n;
            }
            else 
             break;
        }
        else audience_info_list.push_back(Info(name, contact, city, n));
    }
    cout << "截至目前,一共有" << sum << "位听众预定参加。预定听众信息如下:" << endl;
    for(auto &Info:audience_info_list)
    {
        Info.print();
    }
}
View Code

 

标签:Info,city,string,text,void,C++,实验,include,模板
From: https://www.cnblogs.com/mzxfcyt/p/17859677.html

相关文章

  • IT 运维服务规范(模板)
    一、总则本部分规定了IT运维服务支撑系统的应用需求,包括IT运维服务模型与模式、IT运维服务管理体系、以及IT运维服务和管理能力评估与提升途径。二、参考标准下列文件中的条款通过本部分的引用而成为本部分的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内......
  • Modern C++ Starter Kits Share
    初入C++搬砖,在团队中开发实际上很少亲自从零开始搭建C++的完整项目,99%时候都是使用基础架构团队或者CI/CD团队搭建好的框架。这里分享几个配置C++项目的模版,它们一般会涉及三方库管理、格式校准、单元测试、静态检查、Sanitizer配置、CI/CD配置等方面,内容比较完善。BuildSyst......
  • 实验4 现代C++标准库与类模板
    实验任务5#pragmaonce#include<iostream>#include<string>usingnamespacestd;classTextCoder{public:TextCoder()=default;TextCoder(stringstr);stringget_ciphertext();stringget_deciphertext();~TextCoder()=de......
  • C++ Windows版本线程池
    使用:ThreadPoolthreadPool(12);//设定数量threadPool.queue(myFunction,args1,args2,...);//创建任务实现:#include<windows.h>#include<iostream>#include<functional>#include<vector>#include<queue>#include<mutex>#include......
  • C++标准库函数std::async
    1、std::asyncstd::async是C++11的标准库函数,用于创建执行异步任务并返回std::future对象来获取异步执行的结果状态。该函数最简单的用法如下所示:#include<iostream>#include<thread>#include<future>std::stringpromise_string(){for(inti=0;i<200;......
  • C++ Socket网络编程(TCP)
    基于Windows平台的Socket网络编程,用的QT,这个例子里一个服务端和一个客户端,两个应用程序之间进行通信,所以创建两个项目,目录结构如下:直接贴代码:服务端:1//main.cpp2#include<QCoreApplication>3#include<iostream>4#include<QDebug>5#include<cstring>6#i......
  • std::future与std::promise在C++多线程同步与数据共享中的应用
    1、std::promise与std::futurestd::promise与std::future通过配合使用完成数据的同步与共享,两者均是模板类;std::promise存储异步执行的值或异常;std::future提供可供访问的异步执行结果。二者配合使用伪码如下:std::promise<Type>pr;std::future<Type>fu(pr.get_fu......
  • C++聊天集群服务器2
    ​ 总体项目结构如下:一、数据库的封装​ db.h如图代码量不多​ db.cpp:#include"db.h"#include<muduo/base/Logging.h>//数据库配置信息staticstringserver="127.0.0.1";staticstringuser="root";staticstringpassword="123456";st......
  • C++11 后的单例写法
    template<typenameT>classSingleton{public:staticT&getInstance(){staticTt;returnt;}Singleton(constSingleton&)=delete;Singleton&operator=(constSingleton&)=delete;protected:......
  • PIP换源_Pycharm快捷键_自定义文件头模板
    【一】PIP更换国内源永久换源打开控制台或终端,并输入以下命令:pipconfigsetglobal.index-urlhttps://mirrors.aliyun.com/pypi/simple/更改pip源后,可以通过以下命令验证:pipconfiggetglobal.index-url如果返回值为https://mirrors.aliyun.com/pypi/simple/,则表......