网络编程中遇到的C++语法问题:Linux下编译多文件C++程序,C++中用线程系统调用,用string.substr(pos,n)
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];
- linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法
- C++ 调用C 文件遇到的编译问题
- linux下用gcc编译c程序时遇到的问题: error: stdio.h: 没有那个文件或目录
- JNI编程Demo----Java程序调用C&C++编译好的库文件
- linux系统编译C++程序时头文件和库文件搜索路径
- linux系统编译C++程序时头文件和库文件搜索路径
- linux系统编译C++程序时头文件和库文件搜索路径
- linux下如何将c++程序编译成so,如何调用该so文件
- Linux文件编程之【系统调用】—— lseek()
- Linux文件编程之【系统调用】—— access()
- 文件系统编译过程中遇到问题,解决过程Kernel panic - not syncing: Attempted to kill init!
- 1、2 linux文件编程(系统调用)
- linux 3.17内核移植yaffs2文件系统遇到的问题和解决
- matlab文件编译成库在C++环境下使用遇到的问题记录
- Linux 文件系统 用户安装程序 编译程序
- 关于winodows下编程c++遇到的引用文件路径问题
- linux嵌入式编程高手历程系列8-NFS网络文件系统配置方法
- linux下编译C++程序无法链接Mysql的问题
- Linux下编译C++程序遇到错误:undefined reference to `*::*
- Linux下编译C++程序遇到错误:undefined reference to '***'