我目前有以下代码

char my_stream[800];
std::string my_string;
iResult =  recv(clntSocket,my_stream,sizeof(my_stream),0);
my_string = std::string(my_stream);

现在,当我尝试将char数组转换为字符串时,在字符串中出现了奇怪的字符,有关我可能做错了什么的任何建议

最佳答案

因为字符串长度不等于接收到的字节数,所以您得到了奇怪的字符。

您应该像这样初始化字符串:

char* buffer = new char[512];

ssize_t bytesRead = recv(clntSocket,buffer,512,0);

std::string msgStr = std::string(buffer,bytesRead);

delete buffer;

最常见的解决方案是在读取任何内容之前将缓冲区的每个字节清零。
char buffer[512];
buffer = { 0 };

关于c++ - char数组到字符串的转换导致奇怪的字符-套接字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18193711/

10-10 00:44
查看更多