pugi :: char_t *到const char *

时间:2016-01-18 11:53:03

标签: c++ xml pugixml

在SO上有一些非常相似的问题: How to convert pugi::char_t* to string

我一直在努力解决这个问题,作为一个初学者,我真的不知道还有什么可以做的,除了在这里问,所以如果这是重复的话,我很抱歉。

pugi::xml_node actors = source_file.child("scene").child("actors");
std::vector<const char*> actor_db;
for (pugi::xml_node actor = actors.first_child(); actor; actor =     actor.next_sibling())
{
  const char *a = *actor.child_value();
  actor_db[actor.attribute("id").as_int()] = a;
}
  

“pugi :: char_t”类型的值不能用于初始化“const char *”类型的实体

行const char * a = * actor.child_value();尝试将const char_t * xml_node :: child_value()的返回值强制转换为const char *是我的不良尝试。

我希望actor.child_value()的值存储在const char *中,然后放在vector actor的内部。

pugi :: char_t是char或wchar_t的类型,具体取决于配置。我已将其设置为pugi :: char_t将成为char。

我知道这可能是一个简单的错误,但即使我广泛搜索和类似的SO问题,我仍然无法解决我的问题。

1 个答案:

答案 0 :(得分:0)

  

我希望actor.child_value()的值存储在const char *中,然后放在vector actor的内部。

不,你不是。唯一可以存储的东西&#34;&#34; a const char*是一个字符数组的位置。它实际上不是一个字符串,而是一个指向字符串的指针。指针容器充满了问题。

存储std::vector<std::string>,然后将答案 1 中的代码用于您链接的问题,以获取std::string

1 奇怪的是,我刚刚注意到我几年前曾写过的。 :d