C ++从文本文件读取,双行 [英] C++ Read from a text file, lines of double

查看:255
本文介绍了C ++从文本文件读取,双行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在C ++中编写一个程序,它将从一个文本文件读取,并写入一个文本文件。读取的文本文件将在第一行中具有天数(int),随后是三个销售人员在不同行上的名字和姓氏。然后,它将有足够的数据行(双倍),为每个销售人员在给定的周数提供每日销售:示例文本文件如下:

I am trying to write a program in C++ which will read from a text file, and write to a text file. The read text file will have number of days (int) in the first line, followed by three sales persons first and last names on different lines. Then it will have enough lines of data (doubles) to provide daily sales for each sales person for the given numbers of week: The sample text file is given below:

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

我已经阅读了三个销售人员的姓名。但我不知道如何读取每行的双打,因为他们对应不同的销售人员在每一行。我只需要总的每行。我应该怎么做呢?下面的代码是我迄今为止。有人帮忙!

I have got to the part to read three sales person's names. But i don't know how to read the doubles in each lines since they correspond to different sales person in each line. I only need total for each lines though. How should i proceed with this? Following code is what i have so far. Somebody help please!

#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();
}


推荐答案

将一行读入字符串,然后使用字符串作为输入流。这里是一个示例代码,读取3行双打并打印每行的总和。

You can use 'getline' to read one line into a string, then use the string as the input stream. Here is a sample code reading 3 lines of doubles and print the sum for each line.

#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 ++从文本文件读取,双行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆