存在一個大小爲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:不,不幸的是我沒有收到消息的大小的信息。我只能得到緩衝區被填充的信息。 –