将文本文件中的数据放入变量中
Put data from a text file into a variable
我正试图从文本文件中提取数据,将其放入变量中。这就是文本文件的样子:
Cars.txt
1999 Ford Ranger 3000 156000 used
2000 Mazda Miata 4000 98000 used
2015 Jeep Wrangler 33000 250 new
我的输出应该是:
Category| Number| Total Price| TotalMileage|
New| 1| 33000| 250|
Used| 2| 7000| 254000|
此函数应该读取整个文件并编译统计信息。由于每个变量都是引用变量,如果您在此处进行更改,它们应该会影响用于调用函数的变量。在读取整个文件后,您应该能够打印统计信息。
double newTotalPrice = 0;
double newTotalMileage = 0;
double usedTotalPrice = 0;
double usedTotalMileage = 0;
int numUsed = 0;
int numNew = 0;
std::ifstream fin;
std::string filename = "cars.txt";
bool isOpen = GetInputFileStream(&fin, filename);
AnalyzeFile(fin,
numUsed,
numNew,
newTotalPrice,
newTotalMileage,
usedTotalPrice,
usedTotalMileage);
PrintStatistics(std::cout,
numUsed,
numNew,
newTotalPrice,
newTotalMileage,
usedTotalPrice,
usedTotalMileage);
std::cout << "Press ENTER to continue";
std::cin.get();
}
void AnalyzeFile(std::istream & fin,
int & numUsed,
int & numNew,
double & newTotalPrice,
double & newTotalMileage,
double & usedTotalPrice,
double & usedTotalMileage)
{
numUsed = 0;
numNew = 0;
newTotalPrice = 0;
newTotalMileage = 0;
usedTotalPrice = 0;
usedTotalMileage = 0;
while (!fin.eof())
{
fin >> numNew
fin >> Price;
fin >> Mileage;
}
}
所以我的问题是,如何从文本文件中读取数据并将其放入变量中?此外,我如何收集所有变量,如二手车总价,并将其相加?我觉得我把这件事做得比需要的更复杂了。
这里处理fstream有一些棘手之处。以下是编写AnalyzeFile()函数的一种简单方法:
void AnalyzeFile(std::istream & fin,
int & numUsed,
int & numNew,
double & newTotalPrice,
double & newTotalMileage,
double & usedTotalPrice,
double & usedTotalMileage)
{
int modelYear, Price, Mileage;
string Make, Model, Condition;
numUsed = 0;
numNew = 0;
newTotalPrice = 0;
newTotalMileage = 0;
usedTotalPrice = 0;
usedTotalMileage = 0;
do
{
//read each field in a line
Condition = "";
fin>>modelYear>>Make>>Model>>Price>>Mileage>>Condition;
if (Condition == "") break; //no valid data loaded
if (Condition == "used")
{
numUsed++;
usedTotalPrice += Price; //after all entries have been added usedTotalPrice will contain the sum of all the used car prices.
usedTotalMileage += Mileage;
//do other calculations
}
else if (Condition == "new")
{
//do updates for new condition
}
} while (!fin.eof() && !fin.bad());
}
请注意,这段代码不包含任何错误检查,只是入门的大纲。有一件棘手的事情:在读取最后一个字符串fin.eof()后,即使最后一行是有效的,也会返回true。这就是为什么我检查"Condition"字符串是否从文件中接收到任何数据。
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 如何在变量中插入多种不同长度的数据类型?
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 面临在 if 语句之外打印变量数据的问题 完成使用 Qt 编程
- 有没有办法"QByteArray"变量数据直接放入变量"int"而无需强制转换?
- 如何在一行中从不同的变量(数据类型)创建一个字符数组?
- 从保存变量数据类型的数据结构中检索值,而不指定返回类型
- 从字符串中读取变量数据
- 返回对成员变量数据的引用的开销
- 如何将C 变量数据放入System()函数中
- C++生成器 XE 2 -- 如何在 TEdit 控件中显示变量数据
- 定义C++变量:数据类型(值)
- 静态变量/数据和对象
- 将非成员变量数据传递给构造函数时,如何保存它们并在其他成员函数中使用?C++
- 将变量数据发送到其他类时出现问题
- 如何从变量数据创建std::initializer_list
- 将c++的变量数据类型转换为c#
- 如何在C++中存储变量数据