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

Posted

技术标签:

【中文标题】C++。从文件中读取形状名称、长度和宽度并使用它们来计算面积【英文标题】:C++. reading shape name, length and width from file and using those to calculate area 【发布时间】:2016-11-12 17:37:27 【问题描述】:

在这个项目中,我有一个名为 testShape.txt 的文件,其中包含一些形状和有关这些形状的信息,例如高度、半径、长度和宽度。 .txt 文件的第一行是“Rectangle 2.44 3.6”。第二行是“Sphere 1.82”。 (1.82 是创建球体的圆的半径。此外,每个形状都有自己的派生类,形状是纯虚拟基类。我能够读取和打印文本文件,但我我不确定如何使用 .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();

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

【问题讨论】:

你不想读整行:你想读一个字符串(矩形或球体)和一个双精度。你可以像myfile &gt;&gt; str &gt;&gt; d; if (line = "Rectangle") sn-p 是我看看它是否可行。 【参考方案1】:

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

$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

修改此示例以根据为每个形状读取的值计算您需要的任何内容应该是微不足道的。

【讨论】:

以上是关于C++。从文件中读取形状名称、长度和宽度并使用它们来计算面积的主要内容,如果未能解决你的问题,请参考以下文章

C++中如何将两个连续的string 类型存入到文件中并读取出来?

如何从 C++ 中的 hdf5 文件中读取数据块?

从文件中读取行并将它们分成两个数字并执行计算并将它们写入文件c ++

从文件逐字读取并确定换行 C++

如何从 C++ 人脸边界框中提取长度/宽度

将文件中的双值数字读入 C++ 中的向量并访问它们的值