Как преобразовать char * в std :: list & lt; char & gt;

Это вопрос для начинающих

Мне просто интересно, есть ли способ конвертировать символ с нулевым символом в конце * в std :: list.

Спасибо

char* data = ...
std::list<char> clist = convert_chars2list(data);
...
convert_chars2list(char* somedata)
{
//convert
}

0

Решение

std::list<char> convert_chars2list(char *somedata)
{
std::list<char> l;

while(*somedata != 0)
l.push_back(*somedata++);

// If you want to add a terminating NULL character
// in your list, uncomment the following statement:
// l.push_back(0);

return l;
}
2

Другие решения

Это, наверное, самый простой способ:

#include <list>
#include <string>

int main()
{
char const* data = "Hello world";
std::list<char> l(data, data + strlen(data));
}

Это использует тот факт, что std::string имеет интерфейс, совместимый с контейнерами STL.

9

std::list<char> convert_chars2list(char* somedata)
{
std::list<char> res;
while (*somedata)
res.push_back(*somedata++);
return res;
}
1

Если твой char* является строкой в ​​стиле C, чем вы можете сделать это (это означает, что она заканчивается \0)

#include <list>

int main()
{
char hello[] = "Hello World!";

std::list<char> helloList;

for(int index = 0; hello[index] != 0; ++index)
{
helloList.push_back( hello[index] );
}
}
0

Странно использовать std :: list для символов, если вы действительно хотите использовать stl для символов, вы можете использовать станд :: строка, что позволит вам сделать:

char*           data = ....;
std::string     string(data);
-1
По вопросам рекламы [email protected]