存在一个大小为8个字符的接收缓冲区。它的定义是,接收到的字符是一个字符串。没有定义(没有保证)该字符串被零字符终止。安全(与平台无关)char缓冲区为std :: string
简单的例子:
char cBuffer[ 8 ]{ 0 };
ReceiveIncommingMessage(cBuffer);
std::string sStringForFurtherComparison(cBuffer, strlen(cBuffer));
这个例子将针对所有的情况下工作时,接收到的字符串长度小于8字节。我也想知道接收到的字符串没有被零字符终止或长度正好为8字节的情况。
一个strlen_s(buffer, max_length)
与最大长度可以解决这个问题,所以我可以做这样的事情:
std::string sStringForFurtherComparison(cBuffer, strlen_s(cBuffer, sizeof(cBuffer));
我还没有找到标准这样的功能。标准工具有没有优雅的解决方案?也许是一条线索?
'ReceiveIncommingMessage'是否不告诉你消息的大小? – NathanOliver
http://en.cppreference.com/w/c/string/byte/strlen –
@NathanOliver:不,不幸的是我没有收到消息的大小的信息。我只能得到缓冲区被填充的信息。 –