欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > c++作业

c++作业

2025/2/22 2:06:46 来源:https://blog.csdn.net/m0_74302826/article/details/145738633  浏览:    关键词: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.compare(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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词