程序在带有新行"n"的 cout 上崩溃

Program crashing on cout with new line " "

本文关键字:cout 崩溃 新行 程序      更新时间:2023-10-16

这是我的主类,当程序到达主类中调用calcAndDisplay的部分时,它崩溃了。

    #include <iostream>
    #include <iostream>
    #include <iomanip>
    #include "Chap1227.h"
using namespace std;
//function prototypes
double getBonusRate(double rate);
void columnsDashes();
void endPgm();

int main() {
    double rate = 0.0;
        //filling array
        int salesArray[10][4] = {{2400, 3500, 2000, 2750},
                                 {1500, 7000, 1000, 2225},
                                 {2600, 2450, 2100, 2999},
                                 {2790, 2240, 2500, 2885},
                                 {2100, 2600, 2300, 3000},
                                 {6300, 7000, 8000, 5550},
                                 {3300, 1850, 2950, 2100},
                                 {2700, 5500, 6000, 7200},
                                 {4700, 4800, 4900, 5100},
                                 {2375, 3300, 2550, 1925}};
        getBonusRate(rate);
        columnsDashes();
        //bonus object
        Bonus myBonus;
        myBonus.calcAndDisplay(salesArray, rate);
        endPgm();

    return 0;
}
// ***** getBonusRate function description *****
//
double getBonusRate(double rate)
{
    //display console title to user
    cout << "JM SALES BONUS CALCULATORnn";
    //get bonus rate from user
    cout << "Enter bonus rate in decimal form: ";
    cin >> rate;
    cout << "nn";
    return rate;
}
// ***** columnsDashes function description *****
//
void columnsDashes()
{
    //display column headings and dashes to user
    cout << "Number     Sales($)     Bonus($)n";
    cout << "------     --------     --------";
}
// ***** endPgm function description *****
//
void endPgm()
{
    //EOP message
    cout << "nnEnd of Program.";
}

这是包含calcAndDisplay的.h文件,它正在工作,但打印的所有数字都没有空格,所以我将/n添加到print语句中,从那以后它就崩溃了。我尝试删除/n,但它仍然崩溃。我不确定问题是什么。

#ifndef CHAP1227_H_
#define CHAP1227_H_
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
// ***** CLASS DEFINITION *****
class Bonus
{
    public:
       Bonus();
       void calcAndDisplay(int salesArray[10][4], double rate);
    private:
       int totSales;
       int grandTotSales;
       double salesBonus;
       double bonusGrandTot;
};
// ***** CLASS IMPLEMENTATION *****
//default constructor
Bonus::Bonus()
{
    totSales = 0;
    grandTotSales = 0;
    salesBonus = 0.0;
    bonusGrandTot = 0.0;
}
//calcAndDisplay function
//
void Bonus::calcAndDisplay(int salesArray[10][4], double rate)
{

    for (int row = 0; row < 10; row += 1)
    {
        for (int column = 0; column < 4; column += 1)
        {
            totSales += salesArray[row][column];
        }
        cout << totSales + "n";
    }
}

#endif /* CHAP1227_H_ */

我对你的说法持怀疑态度:

我尝试删除/n,但它仍然崩溃。

因为这正是问题所在。

您需要更改:

cout << totSales + "n";

自:

cout << totSales << "n";

如果不进行类型转换,则无法添加双精度型和字符串,但可以连接流。(请注意,您可以将双精度转换为字符串,但以上更直接(。