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

时间:2012-01-29 04:22:43

标签: c++

我正在使用Dev C ++进行编程。

我会尝试给出问题的基本概要......

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

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

2 个答案:

答案 0 :(得分:1)

使用老式的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');

依旧......

答案 1 :(得分:0)

如果您刚刚开始使用C ++中的I / O,您可能会为参考站点添加书签,因为该库提供了许多选项和功能。

  • cppreference.com是一个非权威但方便的来源,wiki风格。
  • Cay Horstmann撰写了一篇涵盖更多内容的文章,您可以搜索关键词。
  • cplusplus.com对旧语言功能有相当好的报道,但有一些错误并且没有很好的更新。

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