从文本文件中打印字符串和整数 (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>> 中,以便将姓名与年龄关联在一起。一旦你找到了年龄最大的地方,你就会找到它的名字。

如果您将它们存储在两个单独的vectors 中,请确保同步跟踪它们。


更新:对于您的代码(正如您在下面评论的),您应该更改

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 #include #include #include using namespace std; int main() ifstream f; f.open("data.txt");字符串名称[7];整数年龄[7],最大值=0; for(int i=1; imax) max=age[i];名称[i]=最大值; cout @user3326689 您可以分享您的代码,让我们更好地了解导致的错误。 我将代码更改为该代码,但没有打印 #include #include #include #include using namespace std; int main() ifstream f; f.open("data.txt");字符串名称[7];整数年龄[7],最大值=0; for(int i=1; imax) max=age[i];名称[i]=最大值; cout @user3326689 并且不要忘记先从文件中读取数据。【参考方案2】:

除非这是一项学校作业,您必须自己实现算法,否则使用standard C++ library 解决所有问题实际上非常容易:

首先,您使用std::getline 将每一行读入std::string 实例。

有了这个字符串和std::istringstream,你就可以使用普通的输入操作符&gt;&gt;解析出不同的字段。

您可以将数据存储在std::map 中,以年龄为键,名称为数据。由于std::map 是按关键字排序的,因此地图中的最后一个条目是“最年长”的人。

如果可以有多个相同年龄的人,则需要改用std::multimap,并准备好打印多个相同年龄的人。

【讨论】:

以上是关于从文本文件中打印字符串和整数 (C++)的主要内容,如果未能解决你的问题,请参考以下文章

程序未从文本文件 c++ 中打印出字符串

从文本文件中读取整数并使用 C++ 将它们存储到向量中

如何在 C 中使用参数从文本文件中打印字符?

C++ 混乱。从文本文件中读取整数。转换为 ASCII

如何从 C++ 中的文本文件中逐行读取整数? [复制]

在 C++ 中将某种结构化的文本文件读入数组