将列表元素分配给char *

时间:2012-09-11 09:46:28

标签: c++ string list char

我在列表中添加了一些元素

std::list<std::string> dirList2;
//Code
dirList2.push_back(findData.cFileName);

copy(dirList2.begin(), dirList2.end(),std::ostream_iterator<std::string>  (std::cout,"\n"));

一切正常,我可以查看这些项目,

现在我想将我的列表的第一个元素分配给char *。

是的,有人能帮帮我吗?我不知道该怎么做

2 个答案:

答案 0 :(得分:5)

如果我很清楚你想要什么,那么你可以这样做:

const char *s = dirList2.front().c_str();
但是,要小心。变量s指向的C字符串由列表中的字符串对象拥有。如果列表超出范围或从列表中删除元素,则std::string的析构函数将释放C字符串,并且您的s指针将无效。

如果你想在std::string对象的生命周期之外操纵C字符串而不是你能做到的话。像这样:

const char *s = strdup(dirList2.front().c_str());

但通常最好使用std::string而不是原始C指针,除非你别无选择。

答案 1 :(得分:1)

字符串对象提供了一个c_str()方法,它将返回一个const char *。如果你需要修改字符串,你还必须复制字符串(IE使用strcpy,其中源指针是c_str()返回的那个)