为什么我的代码仅显示一行?

时间:2019-04-08 10:06:01

标签: c++ arrays file

我正在尝试从我的文件(salsa2.txt)中读取,并且仅显示其中一行? 我的文本文件如下所示:

zh-rCN

这是我的代码:

Sweet and Spicy
1856.43   386.54   785.34  1043.60
Chunky
 847.50  1290.54  1506.80   899.65
Pico de Gallo
1092.65   689.54   987.65   1024.35
Salsa Con Queso
5698.54  7699.54  2345.67   2956.87
Restaurant Style
6758.43  8493.99  2098.54   3905.64

它应该是什么样子减去总体总数等。

const int salsa_type = 5;   //Number of salsa types for rows
const int qurt = 4;         //Number of quarters for columns

bool readFile(string namesArray[], float ary2d[][qurt])                      //bool to return false or true if the data is less than 0
{
    float data;
    int i = 0;
    ifstream inFile;
    inFile.open("salsa2.txt");

    if(!inFile)
    {
        cout << "Error opening data file!\n";
        return false;                                   //returns false then returns to main to end program
    }

    cout << "Reading from data file. \n" << endl;

        for (int r = 0; r < salsa_type; r++)
        {
            getline(inFile, namesArray[r]);

            for (int c = 0; c < qurt; c++)
            {
                inFile >> data;
                ary2d[r][c] = inputValidation(data);        //Checking input before adding into index and will also move to the inputValidation prototype to double check
            }
        }

    inFile.close();

    return true;                                        //returns true then traces back into main function to complete calculations
}
.....
void readData(string namesArray[], float ary2d[][qurt], const float row_total[],
       int row, float col_total[], float total)
{

    cout << fixed << setprecision(2);

    cout << setw(45) << "Chips & Salsa\n" << endl;
    cout << setw(206) << "Quarter 1     Quarter 2    Quarter 3    Quarter 4    Type Totals" << endl;        //Printing the number of columns on the top

    for (int r = 0; r < row; r++)
    {
        cout << endl << namesArray[r] << ": ";

        for (int c = 0; c < qurt; c++)
        {
            cout << setw(13) << ary2d[r][c];                                                    //Has the data set spaced out evenly
        }

        cout << setw(15) << row_total[r];
        cout << endl;
    }

    cout << endl;

    cout << "Quarter totals: ";                                                     //Aligning row totals on the right side of the "table"

    //print total output for numbers
    for(int i=0; i < qurt; i++)
        cout << fixed << setw(13) << col_total[i];                                                   //Aligning column totals across the bottom of the "table"

    cout << endl;
    cout << endl << setw(73) << "Overall Total: " << setw(11) << total << endl;                                 //Aligning total to match the total for columns
}

1 个答案:

答案 0 :(得分:0)

我尝试了另一种方法来解决它,但它确实起作用。所以,我写道:

    for (int r = 0; r < salsa_type; r++)
 { 
       getline(inFile, namesArray[r]); 
       for (int c = 0; c < qurt; c++) 
      { 
         inFile >> data; ary2d[r][c] = inputValidation(data); 
      } 
     inFile.clear(); 
     inFile.ignore(1000,'\n');
 } 
相关问题