- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在创建的程序将从文本文件中读取数据,其中包含一大堆地址和邮政编码。
我的问题是:每次文件读取 "zip:"(if(text == "zip:")
时,程序应该打印出它后面的标记 (规范要求以 token 为导向的输入),即邮政编码。
是否有某种功能只会打印出邮政编码而不会打印出其后的其他文本?很抱歉发了这么长的帖子,只想尽可能详细地介绍程序。如果我还应该包含任何其他信息,请告诉我。我不是在找人给我完整的程序,只是对那个特定问题的一些指导将不胜感激。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string text;
ifstream inFile;
inFile.open("zips");
while(!inFile.fail()) {
inFile >> text;
if(text == "zip:") {
}
}
inFile.close();
return 0;
}
输入是正在循环的文件本身,用户不输入任何输入。我想要的输出是前十个最常见的邮政编码。例如:
Zipz: Frequency:
11204 39
11234 33
22098 27....etc.
这里是一些文件所包含内容的示例。
<8975.37428190@62997216886.XmT.srvr@n325.xnot.com> cc: visa addr: 488 Cicada Avenue =4=Z city: Edmonton zip: T5T4M4 $20.00 <833.337428190@2997439800.XmT.srvr@n324.xnot.com> cc: visa addr: 48030 Nevada Blvd =4=Z city: Montecito zip: 95041 $15.00 <8354.37428190@63001226169.XmT.srvr@n326.xnot.com> cc: visa addr: 493 Park Meadow Drive =4=Z city: Alamo zip: 94521 $10.00 <8857.37428190@63001517062.XmT.srvr@n326.xnot.com> cc: mastercard addr: 893 Moraga Avenue =4=Z city: San Bruno zip: 94012 $15.00
最佳答案
假设你的输入文件总是像你发布的那样格式化,这意味着 zip 总是有一个值(我没有检查极端情况),应该这样做:
#include <iostream>
#include <string>
#include <fstream>
#include <map>
using namespace std;
int main()
{
ifstream inFile;
inFile.open("test");
string text;
map<string, int> frequencies;
while (!inFile.fail())
{
inFile >> text;
if (text == "zip:" && !inFile.fail())
{
string zip;
inFile >> zip;
if (frequencies.find(zip) == frequencies.end())
frequencies[zip] = 1;
else
frequencies[zip]++;
}
}
map<string, int>::iterator it = frequencies.begin();
while (it != frequencies.end())
{
cout << (*it).first << ": " << (*it).second << endl;
++it;
}
return 0;
}
在您的示例文件上运行 1 个拷贝并获得以下输出:
94012: 1
94521: 1
95041: 2
T5T4M4: 1
虽然缺少格式和排序。排序可以通过将 map 中的值放入支持排序的容器中来实现,例如 set
或 vector
。
查看这些答案以了解如何完成:
vector :https://stackoverflow.com/a/8640935/109960
集:https://stackoverflow.com/a/2699101/109960
关于c++ - 有没有办法在文件中遇到指定的词后读入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21843189/
我是一名优秀的程序员,十分优秀!