C++ 在while循环中将条目添加到std::map会覆盖最后输入的一对
问题是: 我在一个while循环中将条目添加到一个映射中,每次它在同一点开始时,我都会。E以前输入的条目将被取消/覆盖 守则:C++ 在while循环中将条目添加到std::map会覆盖最后输入的一对,c++,stdmap,C++,Stdmap,问题是: 我在一个while循环中将条目添加到一个映射中,每次它在同一点开始时,我都会。E以前输入的条目将被取消/覆盖 守则: #include <iostream> #include <map> int main(){ char* key=new char; char *name, *address; name=new char[80]; address=new char[80]; std::map<char*, char
#include <iostream>
#include <map>
int main(){
char* key=new char;
char *name, *address;
name=new char[80];
address=new char[80];
std::map<char*, char*> addressBook;
while(true){
std::cout<<"Please select action: \n";
std::cout<<"e - exit\n";
std::cout<<"a - add new address\n";
std::cout<<"p - print address book\n";
std::cin>>key;
switch(key[0]){
case 'a':
std::cin>>name>>address;
std::cin.clear();
std::cin.ignore(500,'\n');
addressBook[name]=address;
std::cout<<addressBook.size()<<"\n";
break;
case 'p':
for(std::map<char*,char*>::iterator it = addressBook.begin();it!=addressBook.end(); ++it)
std::cout<<it->first<<" "<<it->second<<"\n";
break;
default:
return 0;
}
}
}
#包括
#包括
int main(){
字符*键=新字符;
字符*名称,*地址;
名称=新字符[80];
地址=新字符[80];
地图地址簿;
while(true){
std::cout使用找到的insert方法。按照说明,您这样做的方式只会覆盖最后一个键。使用找到的insert方法。按照说明,您这样做的方式只会覆盖最后一个键。您只会在映射(指针)中存储字符*
,而不是指针的值。同一个指针不断被反复存储,用户输入只是在更改指向的内容
你真的想得到一个<代码>:ST::/map >:St::String s,而不是<代码> char */COD> >一个经验法则,在现代C++中,你几乎不应该使用<代码>新< /C> > .< /P> < p>你只在地图(指针)中存储<代码> char */COD>,而不是指针的值。同一个指针不断被反复存储,用户输入只是在更改指向的内容
你真的想拥有一个<代码>:STD::映射<代码> STD::String S,而不是<代码> char */COD> > String,在现代C++中,你几乎不应该使用<代码>新< /C>。