If the array was null-terminated this would be pretty straight forward:
unsigned char u_array[4] = { \'a\', \'s\', \'d\', \'\\0\' }; std::string str
This should do it:
std::string s(u_array, u_array+sizeof(u_array)/sizeof(u_array[0]));