当前位置: 首页 > wzjs >正文

菏泽做网站建设找哪家好廊坊自动seo

菏泽做网站建设找哪家好,廊坊自动seo,中国公司100强排名,网站制公司1.封装一个mystring类 拥有私有成员: char* p int len 需要让以下代码编译通过,并实现对应功能 mystring str "hello" mystring ptr; ptr.copy(str) ptr.append(str) ptr.show() 输出ptr代表的字符串 ptr.compare(str) 比较ptr和…

1.封装一个mystring类
拥有私有成员:
    char* p
    int len
    
需要让以下代码编译通过,并实现对应功能
mystring str = "hello"
mystring ptr;
ptr.copy(str)
ptr.append(str)
ptr.show() 输出ptr代表的字符串
ptr.compare(str) 比较ptr和str是否一样
ptr.swap(str) 交换ptr 和 str的内容 

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>using namespace std;class mystring {
private:char* p;  // 用来存储字符串的指针int len;  // 字符串的长度public:// 构造函数mystring(const char* str = "") {len = strlen(str);  // 获取字符串的长度p = new char[len + 1];  // 为字符串分配内存strcpy(p, str);  // 复制传入的字符串cout << "构造函数" << endl;}// 析构函数~mystring() {delete[] p;  // 释放动态分配的内存cout << "析构函数" << endl;}// 拷贝函数void copy(const char* str) {delete[] p;  // 先释放当前字符串的内存len = strlen(str);p = new char[len + 1];strcpy(p, str);  // 复制新的字符串}// 附加函数void m_append(const char* str) {char* temp = new char[len + strlen(str) + 1];  // 为新字符串分配内存strcpy(temp, p);  // 复制原字符串strcat(temp, str);  // 追加新字符串delete[] p;  // 释放旧的内存p = temp;  // 更新指针len += strlen(str);  // 更新长度}// 输出函数void show() const {cout << p << endl;}// 比较函数bool compare(const char* str) const {return strcmp(p, str) == 0;  // 比较字符串是否相等}// 交换内容void m_swap(mystring& other) {swap(p, other.p);  // 交换指针swap(len, other.len);  // 交换长度}
};int main() {mystring str("hello");mystring ptr;ptr.copy("world");  // 将 "world" 复制到 ptrptr.m_append("!!!");  // 追加 "!!!" 到 ptrptr.show();  // 输出 "world!!!"bool isEqual = ptr.compare("world!!!");  // 比较 ptr 和 "world!!!"cout << "Are they equal? " << (isEqual ? "Yes" : "No") << endl;ptr.m_swap(str);  // 交换 str 和 ptr 的内容cout << "After swap:" << endl;str.show();  // 输出 "world!!!"ptr.show();  // 输出 "hello"return 0;
}

 2.封装一个 File 类,用有私有成员
File* fp
实现以下功能
File f = "文件名" 要求打开该文件
f.write(string str) 要求将str数据写入文件中
string str = f.read(int size) 从文件中读取最多size个字节,并将读取到的数据返回
析构函数

 

#include <iostream>
#include <fstream>
#include <string>using namespace std;class File {
private:fstream* fp;  // 文件指针string filename;public:// 构造函数,接受文件名并打开文件File(const string& fname) {filename = fname;fp = new fstream(filename, ios::in | ios::out | ios::app);  // 读写模式,并追加内容if (!fp->is_open()) {  // 如果文件不存在,则创建新文件fp->open(filename, ios::out);  // 先创建文件fp->close();fp->open(filename, ios::in | ios::out | ios::app);  // 重新以读写模式打开}cout << "文件 " << filename << " 打开成功!" << endl;}// 写入数据void write(const string& str) {if (fp && fp->is_open()) {*fp << str;  // 写入字符串fp->flush();  // 立即写入文件}}// 读取数据string read(int size) {if (!fp || !fp->is_open()) {return "";}fp->seekg(0, ios::beg);  // 重新定位到文件开头char* buffer = new char[size + 1];  // 分配缓冲区fp->read(buffer, size);  // 读取 size 个字节int bytesRead = fp->gcount();  // 获取实际读取的字节数buffer[bytesRead] = '\0';  // 确保字符串终止string result(buffer);  // 转换为字符串delete[] buffer;  // 释放缓冲区return result;}// 析构函数,关闭文件~File() {if (fp) {fp->close();delete fp;cout << "文件 " << filename << " 已关闭!" << endl;}}
};// 测试代码
int main() {File f("test.txt");  // 打开文件 test.txtf.write("Hello, world!\n");  // 写入字符串string content = f.read(100);  // 读取 100 字节cout << "读取到的内容:" << content << endl;return 0;
}

3.封装一个 Mutex 互斥锁类
要求:
构造函数:初始化互斥锁,并选择互斥锁的种类
lock 上锁互斥锁
unlock 解锁互斥锁
析构函数,销毁互斥锁

并且开启一个线程测试该互斥锁

#include <iostream>
#include <thread>
#include <mutex>using namespace std;class Mutex {
private:mutex mtx;  // 标准互斥锁public:// 构造函数:初始化互斥锁Mutex() {cout << "Mutex 初始化成功!" << endl;}// 加锁void lock() {mtx.lock();cout << "Mutex 已加锁" << endl;}// 解锁void unlock() {mtx.unlock();cout << "Mutex 已解锁" << endl;}// 析构函数:自动销毁~Mutex() {cout << "Mutex 已销毁" << endl;}
};// 共享资源
int shared_counter = 0;
Mutex myMutex;// 线程函数
void increment(int id) {for (int i = 0; i < 5; i++) {myMutex.lock();cout << "线程 " << id << " 访问共享资源" << endl;shared_counter++;cout << "当前 shared_counter 值:" << shared_counter << endl;myMutex.unlock();this_thread::sleep_for(chrono::milliseconds(100));  // 模拟耗时操作}
}int main() {// 创建两个线程thread t1(increment, 1);thread t2(increment, 2);// 等待线程完成t1.join();t2.join();cout << "最终 shared_counter 值:" << shared_counter << endl;return 0;
}

 

http://www.dtcms.com/wzjs/382029.html

相关文章:

  • 富阳做兼职的网站做网站找哪家好
  • 3d动画制作视频教程windows优化大师可以卸载吗
  • 企业网站建设排名资讯模板建站教程
  • 山西太原做企业网站建设的公司seo怎么弄
  • 做图片格式跟尺度用哪个网站好石家庄百度seo
  • 创新型的顺的网站制作免费做做网站
  • 做餐饮培训网站广告网站seo
  • 比较多人用什么网站做推广哈尔滨seo优化公司
  • 做百度移动网站排名找推网
  • 大型门户网站建设所具有的功能模块主要有扫描图片找原图
  • 青岛做网站百度网盘app官方下载
  • 广州网络服装网站建设百度识图在线入口
  • 重庆网站空间键词排名腾讯云服务器
  • 招聘美容师在哪个网站做招聘最有效如何注册域名及网站
  • 做搜狗pc网站排提升关键词排名seo软件
  • web前端就业前景宁波seo优化定制
  • 中企动力会员控制平台优化服务平台
  • 有经验的南昌网站建设百度人工服务24小时
  • 网站开发遇到的问题及解决方法武汉外包seo公司
  • 建设工程项目seo外链发布平台
  • 网站外部推广企业培训师
  • 网站开发技术包括外贸营销平台
  • 邯郸网站制作外包重庆seo
  • 公众号做 视频网站地推接单平台网
  • 手机微网站尺寸推广关键词怎么设置
  • 建设通招标网站网络营销有哪些
  • 网站与规划设计思路怎么建网址
  • 网站建设刷赞和vip山东seo首页关键词优化
  • 外网域名搜索引擎优化的内容有哪些
  • 莱芜上汽大众4s店关键词优化的作用