Bootstrap

C++day2

1.封装一个 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 <memory>

using namespace std;

class File{
private:
	FILE* fp;
public:
	File(const char* filename)
	{
		fp=fopen(filename,"w+");
	}
	~File()
	{
		fclose(fp);
	}


	void write(const char* str)
	{
		fputs(str,fp);
	}


	string read(int size)
	{
		fseek(fp, 0, SEEK_SET);
		char buf[size+1];
		int x=fread(buf,1,size,fp);
		buf[x]='\0';
		string str=buf;
		return str;
	}
};

int main(int argc,const char** argv){
	File f("file.txt");
	f.write("zzy");
	string data=f.read(10);
	cout<<data<<endl;
}

输出结果:

2.封装一个 Mutex 互斥锁类

要求:

构造函数:初始化互斥锁,并选择互斥锁的种类

lock 上锁互斥锁

unlock 解锁互斥锁

析构函数,销毁互斥锁

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

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>

using namespace std;

class Mutex{
private:
	pthread_mutex_t m;
public:
	Mutex()
	{
		pthread_mutex_init(&m,NULL);
	}
	~Mutex()
	{
		pthread_mutex_destroy(&m);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
	}


	void lock()
	{
		pthread_mutex_lock(&m);
	}


	void unlock()
	{
		pthread_mutex_unlock(&m);
	}
};


Mutex M;

void* thread_main(void* arg)
{
	M.lock();
	int i;
	for(i=0;i<=100;i++)
	{
		cout<<i<<endl;
		usleep(10000);
	}
	M.unlock();
	return NULL;
}

int main(int argc,const char** argv){
	pthread_t id;
	pthread_create(&id,0,thread_main,0);
	pthread_join(id, NULL);
	return 0;
}

输出结果:

;