这是一个初学者类型的问题
我只是想知道是否有办法将空终止的 char* 转换为 std::list。
谢谢
char* data = ...
std::list<char> clist = convert_chars2list(data);
...
convert_chars2list(char* somedata)
{
//convert
}
这可能是最简单的方法:
#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> 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;
}
std::list<char> convert_chars2list(char* somedata)
{
std::list<char> res;
while (*somedata)
res.push_back(*somedata++);
return res;
}
如果您char*
是 C 风格的字符串,那么您可以这样做(这意味着它以 a 结尾\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 来包含字符,你可以使用std::string,它可以让你这样做:
char* data = ....;
std::string string(data);