求助:关于c++读取文件的问题

janewayne 2008-04-17 11:09:57
我有一个文件里面的内容如下:
AF=阿富汗
AL=阿尔巴尼亚
DZ=阿尔及利亚
...
全是国家的名字,我要按行读出,然后再按"="区分前面的ID和后面的名称,放在一个dialog的combobox中显示出各个国家的名字,在dialog上选中某国家后,要在后台把该国家对应的ID存起来。
求助如何做啊。
注:我是新手,希望能尽量给出完整点的程序。
...全文
143 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
janewayne 2008-04-18
  • 打赏
  • 举报
回复
但是这样我就没办法知道用户在dialog上选了哪个国家啊,我只能知道他选择的combobox的下标,所以用的map是df <int,char*>
Inhibitory 2008-04-17
  • 打赏
  • 举报
回复
全是国家的名字,我要按行读出,然后再按"="区分前面的ID和后面的名称
这个应该不是问题.

要在后台把该国家对应的ID存起来。
显然的键值对, 所以可以使用Map来存储, 具体的看Map使用,不是几句话能讲清楚的.
lori227 2008-04-17
  • 打赏
  • 举报
回复

string strBuff;
while(getline(ifs,strBuff),!(ifs.eof()))
{
//对strBuff的操作~~
}
janewayne 2008-04-17
  • 打赏
  • 举报
回复
兄弟你这样好象只能读一行是吧,怎么样全读出来呢?
hai040 2008-04-17
  • 打赏
  • 举报
回复
getline好像是iostream里的
janewayne 2008-04-17
  • 打赏
  • 举报
回复
哦,引入<fstream>解决了上面这个问题。
可是又报 'getline': identifier not found
janewayne 2008-04-17
  • 打赏
  • 举报
回复
'ifstream' : undeclared identifier
hai040 2008-04-17
  • 打赏
  • 举报
回复

ifstream ifs(filename);
string line;
getline(ifs,line);
string::size_type pos = line.find('=');
string code = line.substr(0,pos);//AF
string name = line.substr(pos + 1,line.length() - pos - 1);//阿富汗
lori227 2008-04-17
  • 打赏
  • 举报
回复
map<string,string> m_mCountry

获得buf 以后,切割成代号 string strId 和 国家名称 string strCountry

然后插入
m_mCountry.insert(make_pair(strId,strCountry));

janewayne 2008-04-17
  • 打赏
  • 举报
回复
现在可以取出所有的国家了,但把这些放入到一个MAP中有问题,该map中好象只存入了最后一个对象。我是这样写的:
typedef pair <int, char*> Int_Pair;
map <int,char*> state_map;

ifstream ifs("C:\\aaa.properties");
char buf[100] = {0};
while (ifs.good()){
int index = 1;
ifs.getline(buf, sizeof(buf));

state_map.insert(Int_Pair(index++,buf));
}
但map里只有最后一个插入的字符串。
求教啊,郁闷中!
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-17 11:09
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下