您的位置:首页 > 理论基础 > 计算机网络

网络编程中遇到的C++语法问题:Linux下编译多文件C++程序,C++中用线程系统调用,用string.substr(pos,n)

2019-07-15 16:56 405 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_36973999/article/details/95982326

1.g++ 123.cpp MD5.cpp RtspClient.cpp -lpthread -std=c++11

g++ 123.cpp MD5.cpp RtspClient.cpp -lpthread(调用pthread_create())

2.写C++代码经常会使用const作为函数入参,如果这个变量是STL类型或者包含STL类型,在使用iterator时容易会用错。

这里是因为list本身是const类型,需要使用const型的iterator才行,也就是list::const_iterator。

3.//在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static !
//在C语言中,我们使用pthread_create创建线程,线程函数是一个全局函数,所以在C++中,创建线程时,也应该使用一个全局函数。static定义的类的成员函数就是一个全局函数。
void* RtspClient::Response_Recv_routine(void *arg)//静态成员函数只能访问静态变量或静态函数,通过传递this指针进行调用.

{

RtspClient *ptr=(RtspClient *)arg;

(ptr->Recv_message).clear();
    //error_state_num=ReceiveToNumber(buf);    //全局变量 
    (ptr->Recv_message).insert(0,buf);             //两个全局变量存储状态码和收到的信息

}
//在特殊情况下可以通过在静态成员函数参数列表中传递类的地址来实现对类对象的非静态成员变量进行访问与操作

if ((pthread_create(&Response_Recv_tid,NULL,Response_Recv_routine, (void *)this))!=0)

4.s.substr(pos,n),返回一个string,包含s中从pos开始的n个字符的拷贝。eg:cout<<x.substr(0,5)<<endl;//以x[0]为始,向后截取5位(包含x[0])。

5.上锁后记得解锁pthread_mutex_unlock(&mutex);

6.pthread_mutex_lock(&mutex);
            SendRequest("DESCRIBE",map_request);
            pthread_cond_wait(&cond,&mutex);//wait后好像要unlock,不然锁没有解开
            pthread_mutex_unlock(&mutex);

7.将数值转化为字符串。返回对应的字符串。

#include <iostream>   
#include <string>     
using namespace std;
 
int main ()
{
  string pi = "pi is " + std::to_string(3.1415926);
  string perfect = std::to_string(1+2+4+7+14) + " is a perfect number";
  cout << pi << '\n';
  cout << perfect << '\n';
  return 0;
}

8.ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.ctrl+c强制中断程序
ctrl+z的是将任务中断,挂起的状态,
ctrl+c是强制中断程序的执行,而ctrl+z的是将任务中断.
但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,
用户可以使用fg/bg操作继续前台或后台的任务,
fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.

8.C++二维动态数组

vector<int> v;

v[0] = 1;v[1] = 2;v[2] = 3;

vv.push_back[v];

则 vv[0] == v;

vv[0][0] == v[0];

vv[0][1] == v[1];

vv[0][2] == v[2];

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: