0

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

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* 。

有人能帮助我吗 ?我不知道该怎么做

4

2 回答 2

5

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

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

不过要小心。变量s指向的 C 字符串由列表中的字符串对象拥有。如果列表超出范围或您从列表中删除元素,则 C 字符串将由std::string的析构函数释放,您的s指针将无效。

如果你想在物体的提升时间之外操纵 C 弦,那么std::string你可以做某事。像这样:

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

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

于 2012-09-11T09:50:24.967 回答
1

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

于 2012-09-11T09:50:22.363 回答