新手学C++,请教一个关于stl中map的问题
CHID 2010-11-11 09:54:17 新手学C++,请教一个关于stl中map的问题:
1.为什么cout<<txt<<endl;输出的是乱码,用cout如何实现正确输出?
2.txt.Format("ID:%d,Value:%s",it.ID,it.Value); “it.Value”为什么显示的不是修改后的值“ABC”,怎样才能更改其中的内容?
3.因为是新手,这些代码有哪些地方可以改进的吗?
谢谢。
下面是“Item.cpp”的代码:
#include "iostream"
#include "afxwin.h"
#include "map"
using namespace std;
class Item
{
public:
int ID;
CString Value;
};
class Items
{
public:
Item GetItem(int ID)
{
return m_Items[ID];
}
void AddItem(int ID,CString Value)
{
Item it;
it.ID=ID;
it.Value=Value;
m_Items.insert(pair<int,Item>(ID,it));
}
private:
map<int,Item> m_Items;
};
int main()
{
Items its;
int ID;
CString Value;
for (int i=0;i<10;i++)
{
ID=i;
Value.Format("Value%d",i*10);
its.AddItem( ID,Value);
}
printf("正常获取第六个元素的值:\n");
CString txt;
Item it=its.GetItem(5);
txt.Format("ID:%d,Value:%s",it.ID,it.Value);
printf("%s\n",txt);
//为什么这里无法正确输出字符串
cout<<txt<<endl;
printf("\n更改第六个元素后显示:\n");
it.Value="ABC";
txt.Format("ID:%d,Value:%s",it.ID,it.Value);
printf("%s\n",txt);
printf("\n重新获取第六个元素后显示:\n");
it=its.GetItem(5);
//为什么这里 it.Value的值没有变为ABC?
txt.Format("ID:%d,Value:%s",it.ID,it.Value);
printf("%s\n",txt);
return 0;
};