主页 > 软件开发  > 

c++作业

c++作业

练习题:

#include <iostream> #include <cstring> using namespace std; class mystring { char* p; int len; public: mystring(); mystring(const char* p); ~mystring(); void copy(const mystring& str); void append(const mystring& str); void show(); bool compare(const mystring& str); void swap(mystring& str); }; mystring::mystring() :p(NULL),len(0) { } mystring::mystring(const char* p) { len = strlen(p); this->p = new char[len]; strcpy(this->p,p); } mystring::~mystring() { if(p != NULL) { delete[] p; } } void mystring::copy(const mystring& str) { if(p != NULL) { delete[] p; } len = strlen(str.p); p = new char[len]; strcpy(p,str.p); } void mystring::append(const mystring& str) { len = len + str.len; char* temp = p; p = new char[len]; strcpy(p,temp); strcat(p,str.p); delete[] temp; } void mystring::show() { cout<< p << endl; } bool mystring::compare(const mystring& str) { return strcmp(p,str.p) == 0; } void mystring::swap(mystring& str) { char* temp = p; p = str.p; str.p = temp; } int main() { mystring str = "hello"; mystring ptr; ptr.copy(str); ptr.show(); ptr.append(str); ptr.show(); if(ptr pare(str) == true) { cout <<"一样"<<endl; } else { cout <<"不一样"<<endl; } ptr.swap(str); ptr.show(); str.show(); return 0; }

第一题

#include <iostream> #include <cstring> using namespace std; class myFile { private: FILE* fp; public: myFile(const char* file); ~myFile(); void mywrite(string str); string myread(int size); }; myFile::myFile(const char* file) { //fp = fopen(file,"a+"); fp = fopen(file,"w+"); if(fp == NULL) { cout << "文件不存在" <<endl; return; } } myFile::~myFile() { fclose(fp); } void myFile::mywrite(const string str) { const char* p = str.data(); printf("%s\n",p); if(fwrite(p,strlen(p),1,fp)==0) { cout << "写入失败" << endl; } } string myFile::myread(int size) { char buf[size+1] = ""; fseek(fp,0,SEEK_SET); if(fread(buf,size,1,fp) == 0) { cout << "读取失败"<<endl; } // printf("%s\n",buf); string p = buf; return p; } int main() { myFile txt = "./File.txt"; txt.mywrite("1234567123455"); string buf = txt.myread(10); cout << buf <<endl; return 0; }

第二题

#include <iostream> #include <pthread.h> #include <unistd.h> using namespace std; enum kinds_mutex { MUTEX_FAST, MUTEX_CHECK, MUTEX_RECURSION }; class Mutex { private: pthread_mutex_t mu; enum kinds_mutex kinds; public: Mutex(); void setMutex(enum kinds_mutex kinds); ~Mutex(); void lock(); void unlock(); }; Mutex::Mutex() { pthread_mutex_init(&mu,NULL); } void Mutex::setMutex(enum kinds_mutex kinds) { switch(kinds) { case MUTEX_FAST: { pthread_mutex_init(&mu,NULL); break; } case MUTEX_CHECK: { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK_NP); pthread_mutex_init(&mu,&attr); break; } case MUTEX_RECURSION: { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE_NP); pthread_mutex_init(&mu,&attr); break; } } } Mutex::~Mutex() { pthread_mutex_destroy(&mu); } void Mutex::lock() { pthread_mutex_lock(&mu); } void Mutex::unlock() { pthread_mutex_unlock(&mu); } Mutex m1,m2; void* pthread_main(void* arg) { while(1) { m2.lock(); cout << "线程2"<<endl; sleep(1); m1.unlock(); } } int main() { pthread_t id; m1.setMutex(MUTEX_FAST); m2.setMutex(MUTEX_FAST); m2.lock(); pthread_create(&id,0,pthread_main,NULL); pthread_detach(id); while(1) { m1.lock(); cout<<"线程1"<<endl; sleep(1); m2.unlock(); } return 0; }

标签:

c++作业由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“c++作业