vector中元素是结构体的问题
请问假如vector中元素是一个结构体指针类型,如何输出其中的值?
比如说定义如下:
struct xmlNode
{
char* m_nName;
char* m_nValue;
};
vector <xmlNode *> vectorNode;
xmlNode *pNode = new xmlNode();
pNode-> m_nName = "price ";
pNode-> m_nValue = "4.7 ";
vectorNode.push_back(pNode);
在容器中插入很多元素,怎么输出其中的值?
[解决办法]
vector <xmlNode *>::iterator iter = vectorNode.begin();
for (; iter != vectorNode.end(); iter++)
{
xmlNode *pNode = *iter;
cout << pNode-> m_nName << pNode-> m_nValue;
}
[解决办法]
http://www.cplusplus.com/reference/stl/vector/begin/
参考vector迭代器的用法,看看书也行。下面是一个可以编译过的,最好自己写一下
struct xmlNode { char* m_nName; char* m_nValue; };int main (){ vector <xmlNode *> vectorNode; xmlNode *pNode = new xmlNode(); pNode-> m_nName = "price "; pNode-> m_nValue = "4.7 "; vectorNode.push_back(pNode); vector<xmlNode *>::iterator it; for ( it=vectorNode.begin() ; it < vectorNode.end(); it++ ) { printf("name:%s,value:%s\n",(*it)->m_nName,(*it)->m_nValue); } delete pNode; return 0;}
[解决办法]
解析xml?既然都用了vector,为什么不用string?
struct XMLNode{ string sName; string sValue;};vector <XMLNode *> vectorNode;XMLNode *pNode = new XMLNode();pNode->sName = "Price";pNode->sValue = "4.7";vectorNode.push_back(pNode);cout << vectorNode[0]->sName.c_str() << ": " << vectorNode[0]->sValue.c_str() << endl;