C++:矢量<string>到字符数组

C++: vector<string> to char array

本文关键字:字符 数组 gt string lt C++ 矢量      更新时间:2023-10-16

我正在创建基本的ldap服务器作为学校项目。我将ldap消息作为vector<char> searchResDone;发送到客户端(bindResponse、searchResEntry、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>。。我只成功地将一个字符串从矢量转换为字符数组,即{0,x,3,0,…},但我需要一个十六进制数作为一个字符,正如您可以看到的那样。

我试着自己解决这个问题,但我没有主意。

更新:客户端正在通过邮件mail=my.mail@mail.com询问用户名称我已经将名称、登录名、邮件按相同顺序(name[1],login[1],mail[1])解析为vector<string>,所以如果我将收到mail=my.mail@mail.com

当循环通过vector<string> mail时,我使用regex,然后我知道如果mail[1]匹配,我可以从name[1]中取名字。。然后我会把name[1]转换成十六进制数字,我需要把它存储在一些数组{0x30, 0x0c,..}中,把相同类型的数组组合在一起,然后把它作为一个大数组{0x30, 0x0c,..}发送给客户端

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