从文本文件中打印字符串和整数 (C++)
Posted
技术标签:
【中文标题】从文本文件中打印字符串和整数 (C++)【英文标题】:Printing strings and integers from a text file (C++) 【发布时间】:2014-02-19 06:38:41 【问题描述】:我必须从一个包含字符串和整数的文本文件中读取数据,然后编写一个程序来查找最年长的人并显示他们的姓名。 这是我的文本文件中的内容
杰斐逊 17 法案 24 玛丽 19 杰克 22 马太福音 19 克劳迪娅 23 朱迪 18一旦我找到最大的年龄,我就无法打印最年长的人的名字。谁能帮我看看?
【问题讨论】:
你有什么代码? 您好,欢迎来到 ***.com。请花一些时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。更重要的是,请阅读the Stack Overflow question checklist。您可能还想了解SSCCE 是什么。 现在你自己做了什么?版主需要注意这类问题。 【参考方案1】:您可以简单地将它们存储到 vector<pair<string, int>>
中,以便将姓名与年龄关联在一起。一旦你找到了年龄最大的地方,你就会找到它的名字。
如果您将它们存储在两个单独的vector
s 中,请确保同步跟踪它们。
更新:对于您的代码(正如您在下面评论的),您应该更改
for(int i=1; i<=7;++i)
if(age[i]>max)
max=age[i];
name[i]=max;
...
到
string name_oldest; // to store the oldest name
for(int i=1; i<=7;++i)
if(age[i]>max)
max=age[i];
name_oldest = name[i]; // update here
...
【讨论】:
这是我目前所拥有的 #include除非这是一项学校作业,您必须自己实现算法,否则使用standard C++ library 解决所有问题实际上非常容易:
首先,您使用std::getline
将每一行读入std::string
实例。
有了这个字符串和std::istringstream
,你就可以使用普通的输入操作符>>
解析出不同的字段。
您可以将数据存储在std::map
中,以年龄为键,名称为数据。由于std::map
是按关键字排序的,因此地图中的最后一个条目是“最年长”的人。
如果可以有多个相同年龄的人,则需要改用std::multimap
,并准备好打印多个相同年龄的人。
【讨论】:
以上是关于从文本文件中打印字符串和整数 (C++)的主要内容,如果未能解决你的问题,请参考以下文章