multimap中读取关联值的问题

cruzeliu 2007-04-17 08:48:41
我想做一个小型IP查询功能的程序
把ip库放在记事本里 格式为
61.63.96.0 61.64.4.255 台湾省 TWNIC-TW
61.64.5.0 61.64.5.255 台湾省 高雄市
61.64.6.0 61.64.63.255 台湾省 TWNIC-TW
61.64.64.0 61.64.135.255 台湾省 CZ88.NET
61.64.136.0 61.64.136.255 台湾省 宜兰县

现在我输入一个ip,跟其中的匹配后不懂怎么读出后面的地理位置的值了
我用的是multimap

请各路大侠指教
谢谢

给点源码就更好了
呵呵
...全文
235 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2007-04-17
  • 打赏
  • 举报
回复

ifstream ifs("test.txt");
string ip1, ip2, location;
while (ifs)
{
ifs << ip1 << ip2;
getline(ifs, location);
}
todototry 2007-04-17
  • 打赏
  • 举报
回复
那就取上一行,用上面那个程序分成一个一个的字串,把第一个的单词
ip拿走,其它合成一个字串
cruzeliu 2007-04-17
  • 打赏
  • 举报
回复
我的ip库有点大
我实现的功能也就是ip查询功能
所以首先得查到我的ip对应哪一条记录
然后再把该记录的地理位置读出来

还有就是对应的地理位置在文本中不太规则

61.63.96.0 61.64.4.255 台湾省 TWNIC-TW
61.64.5.0 61.64.5.255 台湾省 高雄市
61.64.6.0 61.64.63.255 TWNIC-TW
不一定每行都是4个字段

请教各位

非常感谢
todototry 2007-04-17
  • 打赏
  • 举报
回复
读文件的行统计单词数

int main()
{
ifstream infile;
string filename;
cout << "Please enter the file name: ";
cin >> filename;

infile.open(filename.c_str());
string line;
getline(infile, line, '\n');
infile.close();

vector<string> wordsOfLine;
string::size_type pos = 0, prev_pos =0;
string word;
while ((pos = line.find_first_of(' ', pos)) != string::npos)
{
word = line.substr(prev_pos, pos - prev_pos);
prev_pos = ++pos;
wordsOfLine.push_back(word);
}
wordsOfLine.push_back(line.substr(prev_pos, pos - prev_pos));

size_t numOfLine = wordsOfLine.size();
cout << numOfLine << "words" << endl;
}
jixingzhong 2007-04-17
  • 打赏
  • 举报
回复
#include <fstream>
#include <string>
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
string line;
/*test.txt 测试内容:
61.63.96.0 61.64.4.255 台湾省 TWNIC-TW
61.64.5.0 61.64.5.255 台湾省 高雄市
*/
ifstream openf("test.txt");
char ip1[16], ip2[16], addr1[8], addr2[12]; //每行的四项内容

while(!openf.eof())
{
getline(openf, line);
cout<<line<<endl;

sscanf(line.c_str(), "%s%s%s%s", ip1, ip2, addr1, addr2); //分解到这四个变量
cout<<"ip1: "<<ip1<<endl
<<"ip2: "<<ip2<<endl
<<"addr1: "<<addr1<<endl
<<"addr2: "<<addr2<<endl
<<endl;
//输出查看,正确。如何组合为 multimap 元素,楼主根据需要来吧
}
system("pause");
return 0;
}
jixingzhong 2007-04-17
  • 打赏
  • 举报
回复
给出 数据读取+分割的代码,
分割后如何整合放到 multimap 中,
楼主自己根据需要进行吧。
cruzeliu 2007-04-17
  • 打赏
  • 举报
回复
我就用一次读一行
不懂什么把后面的地理位置的值给抽取出来
wangzhangyong411 2007-04-17
  • 打赏
  • 举报
回复
一次读一行,再切割 以空格来切割

狠点就直接用strtok

cruzeliu 2007-04-17
  • 打赏
  • 举报
回复
非常感谢各位

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧