关于map,为何得不到想要的结果?急!
已知文本test.txt内容如下:
-3.284528 zhang
-6.09183 wang
-5.47386 li
-4.658311 ji
-5.719248 kk
-3.468149 se
-5.354424 you
-4.651674 liu
-5.174396 huang
-4.711619 kuang
程序代码如下:
#include<map>#include<iostream>using namespace std;int main(){ map<char *, float> wf; FILE *fp=fopen("D:\\test.txt","r"); char pData[128]={0}; int n=0; while(fgets(pData,128,fp)){ int len=strlen(pData); pData[len-1]=0; char *p=pData,*q=pData; while(*p!=' ')p++; *p=0;p++; wf[p]=atof(q); cout<<p<<" "<<q<<endl; } fclose(fp); cout<<"___________"<<endl; for(map<char *,float>::iterator it=wf.begin();it!=wf.end();++it){ cout<<it->first<<" "<<it->second<<endl; } return 0;}#include<iostream>using namespace std;int main(){ map<string, float> wf;//换成string FILE *fp=fopen("D:\\test.txt","r"); char pData[128]={0}; int n=0; while(fgets(pData,128,fp)){ int len=strlen(pData); pData[len-1]=0; char *p=pData,*q=pData; while(*p!=' ')p++; *p=0;p++; wf[p]=atof(q); cout<<p<<" "<<q<<endl; } fclose(fp); cout<<"___________"<<endl; for(map<char *,float>::iterator it=wf.begin();it!=wf.end();++it){ cout<<it->first<<" "<<it->second<<endl; } return 0;}
[解决办法]
map<char*, float> char*地址啊,建议用string