Это вопрос для начинающих
Мне просто интересно, есть ли способ конвертировать символ с нулевым символом в конце * в std :: list.
Спасибо
char* data = ...
std::list<char> clist = convert_chars2list(data);
...
convert_chars2list(char* somedata)
{
//convert
}
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;
}
Это, наверное, самый простой способ:
#include <list>
#include <string>
int main()
{
char const* data = "Hello world";
std::list<char> l(data, data + strlen(data));
}
Это использует тот факт, что std::string
имеет интерфейс, совместимый с контейнерами STL.
std::list<char> convert_chars2list(char* somedata)
{
std::list<char> res;
while (*somedata)
res.push_back(*somedata++);
return res;
}
Если твой 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] );
}
}
Странно использовать std :: list для символов, если вы действительно хотите использовать stl для символов, вы можете использовать станд :: строка, что позволит вам сделать:
char* data = ....;
std::string string(data);