gpt4 book ai didi

C++从文本文件中读取,双行

转载 作者:行者123 更新时间:2023-11-28 03:05:14 26 4
gpt4 key购买 nike

我正在尝试用 C++ 编写一个程序,该程序将从一个文本文件读取,然后写入一个文本文件。读取的文本文件将在第一行显示天数 (int),随后在不同行显示三个销售人员的名字和姓氏。然后它将有足够的数据行(双倍)来提供每个销售人员在给定周数内的每日销售额:示例文本文件如下所示:

2              // number of days, could change
sales person1 //first sales person's first and last name
sales person2
sales person3
11.45 30.23 34.56 37.84 45.96 //first day of sales for sales person1
20.45 33.0 22 11 26.87 90 //first day of sales for sales person2
33.57 40 20.87 23.9 45.8 //first day of sales for sales person3

56.6 75.8 39.0 23.3 10 //second day of sales for sales person1
40.34 54.2 12.4 43.5 23
23 45.6 75.34 27.45

我必须读出三个销售人员的名字。但我不知道如何阅读每行中的 double ,因为它们对应于每行中的不同销售人员。不过,我只需要每一行的总数。我应该如何处理这个?以下代码是我到目前为止所拥有的。请有人帮忙!

#include<iostream> 
#include<fstream>
#include<cstdlib>
#include<string>
#include<cctype>
using namespace std;

void get_input(char input_file[]);
void get_output(char output_file[]);
void readFile(char name[]);
string getName(ifstream &in);
void writeFile(char output[]);

int main()
{
ifstream in;
char input_file[30];
char output_file[30];
get_input(input_file);
get_output(output_file);
//int total = readFile(input_file);
writeFile(output_file);
}

void get_input(char input_file[])
{
cout << "Enter name of the input file: ";
cin >> input_file;
}

void get_output(char output_file[])
{
cout << "Enter name of the output file: ";
cin >> output_file;
}

void readFile(char fileName[])
{
int weeks;
double total1 =0, sales1, total2 = 0, sales2, total3 = 0, sales3;

ifstream in;
in.open(fileName);

if(in.fail())
{
cout << " failed to open the input file" << endl;
exit(-1);
}

in >> weeks;
cout << "Total weeks processed: " << weeks << endl;

string name1 = getName(in);
cout << name1 << endl;

string name2 = getName(in);
cout << name2 << endl;

string name3 = getName(in);
cout << name3 << endl;

int i = 1;

/*do // this is where i want to process the sales and get the total
{

in >> sales1;
total1 = total1 + sales1;

in >> sales2;
total2 = total2 + sales2;

in >> sales3;
total3 = total3 +sales3;

} while(i <= 3);*/


in.close();
}

string getName(ifstream &in)
{
string first, last;
in >> first >> last;
return first + " " + last;
}
void writeFile(char output[])
{
ofstream out;
out.open(output);
out.close();
}

最佳答案

您可以使用“getline”将一行读入一个字符串,然后将该字符串用作输入流。这是一个示例代码,读取 3 行 double 值并打印每行的总和。

#include <iostream>
#include<string>
#include <fstream>
#include <sstream>
using namespace std;

int main() {
ifstream fin("data.txt");
string s;
//read a line into 's' from 'fin' each time
for(int i=0; i<3 && getline(fin,s); i++){
//use the string 's' as input stream, the usage of 'sin' is just like 'cin'
istringstream sin(s);
double sum = 0.0, tmp;
while(sin>>tmp){
sum += tmp;
}
cout<<sum<<endl;
}
return 0;
}

关于C++从文本文件中读取,双行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19885481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com