小编Vik*_*ehr的帖子

Secure(plattform independent)char Buffer to std :: string

有一个大小为8个字符的接收缓冲区.定义的是,接收的字符是字符串.没有定义(没有保证)字符串以零字符终止.

简单的例子:

char cBuffer[ 8 ]{ 0 };
ReceiveIncommingMessage( cBuffer );
std::string sStringForFurtherComparison( cBuffer, strlen( cBuffer) );
Run Code Online (Sandbox Code Playgroud)

当接收到的字符串小于8字节时,此示例适用于所有情况.我想要捕获这样的情况,其中接收的字符串不是由零字符终止或者正好是8字节长.

strlen_s( buffer, max_length )具有最大长度的A 可以解决这个问题,所以我可以做这样的事情:

std::string sStringForFurtherComparison( cBuffer, strlen_s( cBuffer, sizeof( cBuffer ) );
Run Code Online (Sandbox Code Playgroud)

我没有在标准中找到这样的功能.使用标准工具有没有优雅的解决方案?也许就行了?

c++ string c++11 c++14

2
推荐指数
1
解决办法
122
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

string ×1