mirror of
https://github.com/reactos/reactos.git
synced 2024-11-09 08:08:38 +00:00
49 lines
728 B
C++
49 lines
728 B
C++
|
// binary2cstr.cpp
|
||
|
|
||
|
#ifdef _MSC_VER
|
||
|
#pragma warning ( disable : 4786 )
|
||
|
#endif//_MSC_VER
|
||
|
|
||
|
#include "binary2cstr.h"
|
||
|
|
||
|
using std::string;
|
||
|
|
||
|
string binary2cstr ( const string& src )
|
||
|
{
|
||
|
string dst;
|
||
|
for ( int i = 0; i < src.size(); i++ )
|
||
|
{
|
||
|
char c = src[i];
|
||
|
switch ( c )
|
||
|
{
|
||
|
case '\n':
|
||
|
dst += "\\n";
|
||
|
break;
|
||
|
case '\r':
|
||
|
dst += "\\r";
|
||
|
break;
|
||
|
case '\t':
|
||
|
dst += "\\t";
|
||
|
break;
|
||
|
case '\v':
|
||
|
dst += "\\v";
|
||
|
break;
|
||
|
case '\"':
|
||
|
dst += "\x22";
|
||
|
break;
|
||
|
default:
|
||
|
if ( isprint ( c ) )
|
||
|
dst += c;
|
||
|
else
|
||
|
{
|
||
|
dst += "\\x";
|
||
|
char tmp[16];
|
||
|
_snprintf ( tmp, sizeof(tmp)-1, "%02X", (unsigned)(unsigned char)c );
|
||
|
tmp[sizeof(tmp)-1] = '\0';
|
||
|
dst += tmp;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return dst;
|
||
|
}
|