帮助未定义和多个字符成为常量

Help undefined and to many characters to be a constant

本文关键字:常量 字符 未定义 帮助      更新时间:2023-10-16

我不明白我做错了什么。我是一个新手,不明白为什么trimtype是未定义的,而"Vinyl interior trim"有太多的字符,不能成为常量。请帮助

#include "stdafx.h"
#include <iostream>
#include <string>
#include <iomanip>
#include <cctype>
using namespace std;
    void getIntroduction();
    void getBasePrice(double& BaseCost);
    void getEngineCost(double& EngineCost, string& EngineType);
    void getTrimCost(double& TrimCost, string& TrimType);
    void getRadioCost(double& RadioCost, string& RadioType);
    void calcTotalCost(double& BaseCost, double& EngineCost, double& TrimCost, double& RadioCost, double& ShippingCost, double& DealerCost);
int _tmain(int argc, _TCHAR* argv[])
{
    double ShippingCostOut;
    double DealerCostOut;
    double BaseCostOut;
    double EngineCostOut;
    double TrimCostOut;
    double RadioCostOut;
    double TotalCostOut;
    string EngineTypeOut;
    string TrimTypeOut;
    string RadioTypeOut;
    string ExitKey;
    ShippingCostOut = 500.00;
    DealerCostOut = 175.00;
    cout << endl;
    cout << endl;
    getIntroduction();
    cout <<endl;
    cout <<endl;
    cout << " Your selections will determine final Price" << endl;
    cout << endl;
    getBasePrice(BaseCostOut);
    cout<< endl;
    getEngineCost(EngineCostOut,EngineTypeOut); 
    cout<< endl;
    getTrimCost(TrimCostOut,TrimTypeOut);
    cout<< endl;
    getRadioCost(RadioCostOut,RadioTypeOut);
    cout<< endl;
    cout << endl;
    TotalCostOut = ShippingCostOut + DealerCostOut + BaseCostOut + EngineCostOut + TrimCostOut + RadioCostOut;
    system("CLS");
    cout << " Your selections result in:" << endl;
    cout << " Base Cost - $" << BaseCostOut << endl;
    cout << endl;
    cout << " " << EngineTypeOut << " - $" << EngineCostOut << endl;
    cout << endl;
    cout << " " << TrimTypeOut << " - $" << TrimCostOut << endl;
    cout << endl;
    cout << " " << RadioTypeOut << " - $" << RadioCostOut << endl;
    cout << endl;
    cout << " Shipping Cost - $" << ShippingCostOut << endl;
    cout << " Dealer Cost   - $" << DealerCostOut << endl;
    cout << endl;
    cout << " The total cost of the vehicle is: $" << TotalCostOut << endl;
    cout << endl;
    cout << "Enter any key and hit Enter to end program." << endl;
    cin >> ExitKey;
    return 0;
}
void getIntroduction ()
    {
        cout << "Universal Motors New Car Price Calculator" << endl;
        cout << " You will select your Options" << endl;
        cout << endl;
        cout << " The shipping cost - $500.00"<<endl;
        cout << " The dealer cost   - $175.00"<<endl;
        cout<< endl;

    }
void getBasePrice(double& BaseCost)
    {
            char BaseCheck;
            BaseCheck = 'A';
            cin.clear();
            cin.sync();

            do
            {
                BaseCheck = 'A';
                cout << endl;
                cout << " Please enter the base price for the new car: " << endl;
                cout << " Please enter Base Price in this format xxxxx.xx (x is a number):" <<endl;
                cout << endl;
                cout << "$ ";
                cin >> BaseCost;
                cout << BaseCost * 2;

            } while (BaseCheck == 'S');
    }
    void getEngineCost(double& EngineCost, string& EngineType)
    {
        char EngineLetter;
        do
        {
            cout << endl;
            cout << " Please choose your engine type: "<< endl;
            cout<< endl;
            cout << "  S - 6 cylinder engine - $150.00"<<endl;
            cout << "  E - 8 cylinder engine - $475.00"<<endl;
            cout << "  D - Diesel engine     - $750.00"<<endl;
            cout << endl;
            cout << " Please enter your engine type: ";
            cin >>  EngineLetter;

            switch (EngineLetter)
            {   
                case 'S':
                    EngineCost = 150.00;
                    EngineType = "6 cylinder engine";
                break;
                case 'E':
                    EngineCost = 475.00;
                    EngineType = "8 cylinder engine";
                break;
                case 'D':
                    EngineCost= 750.00;
                    EngineType = "Diesel engine";
                break;  
    }
void getTrimCost(double& TrimCost, string& TrimType);
    {
        char TrimChoice;
        do  
        {
            cout << endl;
            cout << "Please choose your Trim Type:" << endl;
            cout<< endl;
            cout << " V - Vinyl interior trim   - $50.00"<<endl;
            cout << " C - Cloth interior trim   - $225.00"<<endl;
            cout << " L - Leather interior trim - $800.00"<<endl;
            cout << endl;
            cout << " Please enter your Trim: ";
            cin >>  TrimChoice;
            switch (TrimChoice)
            {   
                case 'V':
                    double TrimCost = 50.00;
                    TrimType = 'Vinyl interior trim';
                break;
                case 'C':
                    TrimCost = 225.00;
                    TrimType = "Cloth interior trim";
                break;
            case 'L':
                TrimCost= 800.00;
                TrimType = "Leather interior trim";
            break;
    }
void getRadioCost(double& RadioCost, string& RadioType);
    {
        char RadioChoice;   
        do  
        {
            cout << endl;
            cout << "Please choose your Radio:" << endl;
            cout<< endl;
            cout << " C - AM/FM Radio - $100.00" << endl;
            cout << " P - CD/DVD      - $400.00" << endl;
            cout << endl;
            cout << " Enter Selection Please: ";
            cin >>  RadioChoice;

            if (RadioChoice == 'C')
            {
                double RadioCost = 100.00;
                RadioType = "AM/FM Radio";
            }
            else 
                if (RadioChoice == 'P')
                {
                    double RadioCost = 400.00;
                    RadioType = "CD/DVD";
                }
        }

问题可能出在这一行:

TrimType = 'Vinyl interior trim';

在C和c++中,单引号(')表示char字面值,即单个字符。但是你的TrimType不是char,它是string,所以你必须使用双引号("):

TrimType = "Vinyl interior trim";