Надеюсь, что я четко изложил свою цель в теме, а следующий - код, который я использую.C++ Преобразование строки в unsigned char и преобразование ее обратно, чтобы получить строку
#include <stdio.h>
#include <inttypes.h>
#include <iostream>
using namespace std;
int main() {
const char *data_ptr =(char*)"test";
const uint8_t* p = reinterpret_cast<const uint8_t*>(&data_ptr);
uint8_t* p1= const_cast<uint8_t*>(p);
char* p2 = reinterpret_cast<char*>(p1);
const char *final= const_cast<const char*>(p2);
string s1(data_ptr);
string s(reinterpret_cast<char const*>(p1),4) ;
cout<<"data_ptr is "<<data_ptr<<endl;
cout<<"p "<<p<<endl;
cout<<"p1 "<<p1<<endl;
cout<<"p2 "<<p2<<endl;
cout<<"final is "<<final<<endl;
cout<<"final1 is "<<s1.size() << "<-->"<<s.size()<<endl;
return 0;
}
и что он печатает следующим образом.
data_ptr is test
p [email protected]
p1 [email protected]
p2 [email protected]
final is [email protected]
final1 is 4<-->4
Что мне делать, чтобы получить «тест» в виде строки.
Не знаете, чего вы пытаетесь достичь здесь. Вы в основном просто бросаете указатели. Вы пробовали 'std :: string (some-of-your-pointer)'? В противном случае давайте немного больше контекста о том, что вы хотите сделать точно. –
'& data_ptr' не является указателем на символы, это указатель * на указатель * на некоторые символы. –
^what joachim said .. также интересно, где вы получили 'const char * data_ptr = (char *)" test ";' notation, не думаю, что я когда-либо видел это '(char *)' cast before? – stijn