c++ - char 数组到字符串的转换会导致奇怪的字符 - 套接字

标签 c++ sockets client-server

我目前有以下代码

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/

相关文章:

c++ - 如何将终端的输出保存到变量

c++ - 范围 TS 重大变化?

sockets - 检查套接字是否阻塞(特定于 Winsock)

mySQL 5.7.13 源安装不创建 mysqld.sock

c# - 处理来自 WS 的异常

c# - 你能在 C# 中编写一段 C++ 代码吗?

c++ - 如何使深度中的对象易于配置 "from the top"?

java - 套接字(Java 中)。分割字节 block

design-patterns - 事件驱动逻辑的设计模式

java - 如何保护客户端/服务器套接字通信