在这个项目中,我有一个名为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();
}
总而言之,我的问题是,如何从文件中的一行读取每个元素并将其传递给执行计算的类。
答案 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
修改此示例以从每个形状读取的值计算所需内容应该是微不足道的。