做一个自己的网站流程,网站设计模板psd,网站建设控制面板怎么设置,泰安人才信息网官网封装一个 File 类#xff0c;
用有私有成员 File* fp
实现以下功能
File f 文件名 要求打开该文件
f.write(string str) 要求将str数据写入文件中
string str f.read(int size) 从文件中读取最多size个字节#xff0c;
并将读取到的数据返回 析构函数
#… 封装一个 File 类
用有私有成员 File* fp
实现以下功能
File f 文件名 要求打开该文件
f.write(string str) 要求将str数据写入文件中
string str f.read(int size) 从文件中读取最多size个字节
并将读取到的数据返回 析构函数
#include iostream
#include cstring
#include cstdlib
#include unistd.h
#include sstream
#include vector
#include memoryusing namespace std; class File{
private:FILE* fp;
public:File(const char* p);void write(const char* str);char* read(const int size); ~File(){fclose(fp);}
};File::File(const char* p)
{fpfopen(p,w);coutp文件打开成功endl;
}void File::write(const char* str)
{if(fpNULL){cout写入失败endl;}int lenstrlen(str);fwrite(str,len,1,fp);cout写入成功endl;
}char* File::read(const int size)
{if(fpNULL){cout读取失败endl;}char* p(char*)malloc(size1);fseek(fp,SEEK_SET,0);fread(p,size,1,fp);return p;
}int main(int argc,const char** argv){File ftest.txt;cout请输入文件内容endl;char str1[64];cinstr1;f.write(str1);int size;cout请输入读取多少数据endl;cinsize;char* pf.read(size);coutpendl;free(p);return 0;
} 封装一个 Mutex 互斥锁类 要求
构造函数初始化互斥锁
并选择互斥锁的种类 lock 上锁互斥锁
unlock 解锁互斥锁 析构函数
销毁互斥锁
并且开启一个线程测试该互斥锁
#include iostream
#include cstring
#include cstdlib
#include unistd.h
#include sstream
#include vector
#include memory
#include signal.husing namespace std; class Mutex{
private:pthread_mutex_t m;
public:void init();void lock();void unlock();~Mutex();
};void Mutex::init()
{int i0;cout请选择互斥锁种类endl;cout1、默认锁endl;cout2、递归锁endl;cout3、错误检查锁endl;cini;switch(i){case 1:{pthread_mutex_init(m,NULL);break;}case 2:{pthread_mutexattr_t attr;pthread_mutexattr_init(attr);pthread_mutexattr_settype(attr,PTHREAD_MUTEX_RECURSIVE_NP);pthread_mutex_init(m,attr);pthread_mutexattr_destroy(attr);break;}case 3:{pthread_mutexattr_t attr;pthread_mutexattr_init(attr);pthread_mutexattr_settype(attr,PTHREAD_MUTEX_ERRORCHECK_NP);pthread_mutex_init(m,attr);pthread_mutexattr_destroy(attr);break;}}
}void Mutex::lock()
{pthread_mutex_lock(m);
}void Mutex::unlock()
{pthread_mutex_unlock(m);
}Mutex::~Mutex()
{pthread_mutex_destroy(m);cout析构成功endl;
}/*-----------------------------------------------*/Mutex mutex1,mutex2;//设置全局的对象int flag1;void task1()
{while(flag){mutex1.lock();printf(1号在看电视\n);sleep(1);mutex2.unlock();}
}void task2()
{while(flag){mutex2.lock();printf(2号在打游戏\n);sleep(1);mutex1.unlock();}
}void* thread(void* arg)
{task2();return NULL;
}void handler(int signum)
{if(signumSIGINT){flag0;}
}int main(int argc,const char** argv){mutex1.init();mutex2.init();mutex2.lock();signal(SIGINT,handler);pthread_t id;pthread_create(id,0,thread,0);pthread_detach(id);task1();sleep(1);return 0;
}