C ++。从文件中读取形状名称,长度和宽度,并使用它们来计算面积

时间:2016-11-12 17:37:27

标签: c++

在这个项目中,我有一个名为testShape.txt的文件,其中包含一些形状和有关这些形状的信息,例如高度,半径,长度和宽度。 .txt文件的第一行是"矩形2.44 3.6"。第二行是"球体1.82"。 (1.82是创建球体的圆的半径。此外,每个形状都有自己的派生类,形状是纯虚基类。我能够读取和打印文本文件,但是我&# 39;我不确定如何使用.txt文件中的每一行元素。我有一个非常基本的代码设置来读取文件。

ifstream myfile;
myfile.open("testShapes.txt");

if (myfile.is_open())
{
    while (getline(myfile, line))
    {
        cout << line << '\n';
        if (line == "Rectangle")
        {
            Rectangle::Rectangle(line, line);
        }
    }
    myfile.close();
}

总而言之,我的问题是,如何从文件中的一行读取每个元素并将其传递给执行计算的类。

1 个答案:

答案 0 :(得分:0)

您可以逐字阅读输入文件,同时跟踪当前正在处理的形状。假设您的输入文件包含以下具有不同数量的相应维度的形状:

$cat testShapes.txt
Rectangle 2.44 3.6
Sphere 1.82
Square 1.11
Parallelepiped 3.33 4.44 5.55

读完形状后,您就会知道下一个要阅读的尺寸。

#include <iostream>
using namespace std;

int main() {
    string word;
    double d1, d2, d3;

    while (cin >> word)
    {
        cout << "shape: \""  << word << "\"" << endl;

        if (word == "Rectangle") {
           cin >> d1 >> d2;
           cout << "\tdimensions: "  << d1 << ", " << d2 << endl;
        }
        else if (word == "Sphere") {
           cin >> d1;
           cout << "\tdimension: "  << d1 << endl;
        }
        else if (word == "Square") {
           cin >> d1;
           cout << "\tdimension: "  << d1 << endl;
        }
        else if (word == "Parallelepiped") {
           cin >> d1 >> d2 >> d3;
           cout << "\tdimensions: "  << d1 << ", " << d2 << ", " << d3 << endl;
        }
        else {
           cout << "Unknow shape" << endl;
        }
    }

    return 0;
}

在此示例中,不是从文件中读取数据,而是从标准输入cin读取数据。例如,在编译它之后在linux上运行它:

$a.out < testShapes.txt

修改此示例以从每个形状读取的值计算所需内容应该是微不足道的。