gpt4 book ai didi

c++ - 有没有办法在文件中遇到指定的词后读入数据?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:03 24 4
gpt4 key购买 nike

我正在创建的程序将从文本文件中读取数据,其中包含一大堆地址和邮政编码。

我的问题是:每次文件读取 "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 中的值放入支持排序的容器中来实现,例如 setvector

查看这些答案以了解如何完成:

vector :https://stackoverflow.com/a/8640935/109960
集:https://stackoverflow.com/a/2699101/109960

关于c++ - 有没有办法在文件中遇到指定的词后读入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21843189/

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