gpt4 book ai didi

c++ - 在 while 循环中向 std::map 添加条目会覆盖最后输入的对

转载 作者:行者123 更新时间:2023-11-28 00:06:36 25 4
gpt4 key购买 nike

问题:我在 while 循环中向 map 添加条目,每次它都从同一点开始,我。 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*> 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;
}
}
}

设置:代码::使用 MinGW/gcc 4.7.1 的 block

最佳答案

您只存储了 char *在 map (指针)中,不是指针的值。同一个指针不断被反复存储,而用户输入只是改变指向的内容。

你真的很想拥有一个 std::map<std::string, std::string> , 相反,并读入 std::string s,不是 char *秒。一条经验法则是,在现代 C++ 中,您几乎不必使用 new。 .

关于c++ - 在 while 循环中向 std::map 添加条目会覆盖最后输入的对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35370574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com