Копирование массива без знака с нулевым символом в конце в std :: string - PullRequest
41 голосов
/ 14 января 2011

Если бы массив был с нулевым символом в конце , это было бы довольно просто:

unsigned char u_array[4] = { 'a', 's', 'd', '\0' };
std::string str = reinterpret_cast<char*>(u_array);
std::cout << "-> " << str << std::endl;

Однако мне интересно, каков наиболее подходящий способ скопировать не ноль неопределенный массив символов без знака, например:

unsigned char u_array[4] = { 'a', 's', 'd', 'f' };

в std::string.

Есть ли способ сделать это без перебора массива символов без знака ?

Спасибо всем.

Ответы [ 12 ]

0 голосов
/ 14 января 2011

Попробуйте:

std::string str;
str.resize(4);
std::copy(u_array, u_array+4, str.begin());
0 голосов
/ 14 января 2011

Вы можете создать символьный указатель, указывающий на первый символ, и другой, указывающий на один за последним, и построить, используя эти два указателя в качестве итераторов.Таким образом:

std::string str(&u_array[0], &u_array[0] + 4);
...