6

What would be the code to convert an std::string to unsigned char* and back?

str = "1234567891234567"
unsigned char* unsignedStr = ConvertStrToUnsignedCharPointer(str);
str1 = ConvertUnsignedCharToStr(unsignedStr);

str and str1 must be same with no loss of precision.

mpromonet
  • 11,326
  • 43
  • 62
  • 91
Sahil
  • 359
  • 2
  • 5
  • 13

1 Answers1

15
auto str1 = std::string{"1234567891234567"}; // start with string
auto chrs = str.c_str(); // get constant char* from string
auto str2 = std::string{ chrs }; // make string from char*

Unsigned char*:

auto uchrs = reinterpret_cast<unsigned char*>(const_cast<char*>(chrs));

Using vectors instead of raw pointers:

using namespace std;

auto str1 = string{"1234567891234567"};
vector<char> chars{ begin(str1), end(str1) };

vector<unsigned char> uchars;
transform(begin(str1), end(str1), back_inserter(uchars),
    [](char c) { return reinterpret_cast<unsigned char>(c); });
utnapistim
  • 26,809
  • 3
  • 46
  • 82