0

这是一个初学者类型的问题

我只是想知道是否有办法将空终止的 char* 转换为 std::list。

谢谢

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

5 回答 5

9

这可能是最简单的方法:

#include <list>
#include <string>

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

std::string它利用了具有与 STL 容器兼容的接口的事实。

于 2013-02-22T23:10:16.527 回答
2
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;
}
于 2013-02-22T23:10:11.340 回答
1
std::list<char> convert_chars2list(char* somedata)
{
  std::list<char> res;
  while (*somedata)
     res.push_back(*somedata++);
  return res;
}
于 2013-02-22T23:10:55.453 回答
0

如果您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] );
    }    
}
于 2013-02-22T23:11:18.057 回答
-1

使用 std::list 来包含字符真的很奇怪,如果你真的想使用 stl 来包含字符,你可以使用std::string,它可以让你这样做:

char*           data = ....;
std::string     string(data);
于 2013-02-22T23:10:48.473 回答