【问题标题】:Reading a Text file with Mixed Input using cin and/or strings使用 cin 和/或字符串读取具有混合输入的文本文件
【发布时间】:2014-02-08 00:22:25
【问题描述】:

我刚刚开始解决我必须解决的编码问题,但不确定如何开始和完成任务。有多个由单词组成的文本文件。如果一个单词是一个数字,那么这就是学生在一个问题上的分数,所以你将它添加到学生的考试分数中。如果单词不是数字,而是单词“NAME”,那么下一个单词就是学生的姓名。如果单词是“AVERAGE”,那么您开始阅读数字,直到您阅读到一个不是数字的单词(或者是文件的结尾)。您将所有这些数字平均并将其添加到分数中。有时数字不跟在“AVERAGE”之后。在这种情况下,您忽略“平均”。输入总是只有一个名字,学生的名字不会是“Average”或“Name”。

这里有一些例子:

UNIX> cat test-1.txt
NAME Fred
UNIX> ./moonglow < test-1.txt
Fred 0
UNIX> cat test-2.txt
NAME Dontonio
8.6
16.2
UNIX> ./moonglow < test-2.txt
Dontonio 24.8
UNIX> cat test-3.txt
I miss Starrlight!!
15 NAME
Frank
UNIX> ./moonglow < test-3.txt
Frank 15
UNIX> cat test-4.txt
AVERAGE 10 15 20 NAME Luther 10 Starrlite!!
UNIX> ./moonglow < test-4.txt
Luther 25
UNIX> cat test-5.txt
NAME Baby-Daisy
AVERAGE 3 4 5 6
AVERAGE 7 8 9
Where's Starrlite!!
UNIX> ./moonglow < test-5.txt
Baby-Daisy 12.5
UNIX> cat test-6.txt
Starrlite AVERAGE Starrlite!!! NAME 
Starrlite
AVERAGE 55 Starrlite!!!  Starrlite
AVERAGE Starrlite 5 6 7
UNIX> ./moonglow < test-6.txt
Starrlite 73 

有时,文件中会出现不必要的单词,必须忽略。

基本上,我想知道我会用什么方法来读取输入?获取线?纯cin?当每个信息都可以在文件之间更改时,我不确定如何使用 cin 处理每条信息所在的不同位置(名称、平均值、分数)。

【问题讨论】:

  • 问题是什么?
  • 我对其进行了编辑以包含我的真实问题。

标签: c++ string cin getline


【解决方案1】:

您正在从文件中获取输入,因此您不能使用 cin 等。
您必须使用此链接中“文本文件”中的方法:
http://www.cplusplus.com/doc/tutorial/files/

阅读文本后,您必须对其进行解析,检查每个元素是数字还是单词,并根据需要进行处理。

【讨论】:

    猜你喜欢
    • 2013-03-14
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多