正在从包含Int和Char数据类型的文件中读取

Reading from File Containing Int and Char data types

本文关键字:数据类型 文件 读取 Char 包含 Int      更新时间:2023-10-16

我使用Dev C++来完成此编程任务。

我将试着对这个问题做一个基本的概述。。。

我正在尝试编写一个程序,从文件中读取时间戳和温度读数,然后将时间戳设置为特定格式,并在需要时将温度转换为摄氏度。输入文件的顶部有一个哨兵编号,用于指示需要读取多少行数据。在这个int之后,每行都包含一个数字(即200103121915 F51.13),日期和临时之间有一个空格。格式为YYYYMMDDHHMM。在不使用指针或任何面向对象编程的情况下,我们应该将每个条目转换为MM/DD/YYYY-HHMM格式,如果温度以华氏度为单位,则需要将其转换为摄氏度。

我尝试过的每一种方法都会遇到问题。首先,我只想将整个12位数字读取为int,然后使用一些模数命令来分离每个部分。然而,我发现int不会容纳那么大的数字。接下来,我想把每个数字读入一个数组,然后把各个数组拼凑成正确的格式。我不知道如何一次读一位数。我想数组需要是和int类型,但我该如何处理F或C标签?基本上,我只是在寻找一些关于如何完成这项任务的基本想法,而不是要求别人来编写代码。

如果只使用老式的stdio.h函数,这会容易得多。

fscanf(stream, "%4d%2d%2d%2d%2d %c%f", &year, &month, &mday, &hour, &minute, &unit, &temp);

如果你真的真的不能使用指针,那么

year = 1000 * (fgetc(stream) - '0');
year += 100 * (fgetc(stream) - '0');
year +=  10 * (fgetc(stream) - '0');
year +=       (fgetc(stream) - '0');
month =  10 * (fgetc(stream) - '0');
month+=       (fgetc(stream) - '0');

等等…

如果您刚刚开始使用C++中的I/O,您可能会将一个参考网站作为书签,因为库提供了很多选项和功能。

  • cppreference.com是一个非权威但方便的维基风格的来源
  • Cay Horstmann写了一篇涵盖更多领域的文章,你可以搜索关键词
  • cplusplus.com对较旧的语言功能有相当好的覆盖,但有一些错误,并且没有很好地更新

作为进一步的指针,std::setw操纵器可能有助于提取给定数量的字符——尽管它不会阻止数字提取过于贪婪。