C ++:vector <string>到char数组

时间:2017-11-20 12:14:41

标签: c++

我正在创建基本的ldap服务器作为学校项目。我将ldap消息发送到客户端(bindResponse,searchResEntry,searchResDone)为vector<char> searchResDone;

声明:

vector<char> searchResDone = {0x30, 0x0c, 0x02, 0x01, 0x02, 0x65, 0x07, 0x0a, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00};

功能:

void sendResponse(int newsock, char response[], int msg_size){
  int i = write(newsock,response,msg_size);// send message to the client
  if (i == -1){ // check if data was successfully sent out
    err(1,"write() failed.");
  }
  else if (i != msg_size){
    err(1,"write(): buffer written partially");
  }
}

拨打:

sendResponse(newsock,reinterpret_cast<char*>(searchResDone.data()), searchResDone.size());

问题:

我正在从客户端分解searchRequest,然后将其分析并构建为

vector<string> response;

我不知道的是将回复发送为vector<string>vector<string> vcStr; vcStr[0] is for example 0x30)而且我无法将其转换为vector<char> ..我只管理将一个字符串从vector转换为char数组为{0,x,3,0,...}但我需要一个十六进制数字作为一个char,因为你可以看到更高。

我试图自己解决这个问题但我没有想法。

更新 客户要求邮件mail=my.mail@mail.com的用户名称 我已经按照相同的顺序(name[1],login[1],mail[1])将姓名,登录信息,邮件解析为vector<string>,因此我会收到mail=my.mail@mail.com

我在循环vector<string> mail时使用正则表达式,然后我知道mail[1]是否匹配,我可以从name[1]取名...然后我会将name[1]转换为{}十六进制数字,我需要将它存储在某个数组{0x30, 0x0c,..}中,将相同类型的数组组合在一起,并将其作为一个大数组{0x30, 0x0c,..}

发送给客户端

1 个答案:

答案 0 :(得分:1)

到目前为止最简单的解决方案是在sendResponse中的每个string重复调用vector<string>。目标是一个套接字,几乎可以肯定它是一个流(而不是消息)套接字。流套接字的另一端无法查看您调用sendResponse的频率;他们只看到一个字节流。