读书人

虽然分不多但真心请问关于C++程序

发布时间: 2012-09-17 12:06:51 作者: rapoo

虽然分不多,但真心请教,关于C++程序的一个纠错问题。
错误提示:
error C2676: binary '==' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' does not define this operator or a conversion to a type acceptable to the predefined
operator

程序如下。

// 计算一间房子墙壁面积以及所需油漆的量 P70
#include <iostream>
#include <iomanip>
#include<string>
using namespace std;

int main()
{
float l,w,h;//房间的长,宽,高
float Sdw;//门和窗的总面积
float totalS ;//总共面积
float printS;//需要刷漆的面积
string answer1,answer2;
float costPer,costTol;//定义每平方英尺消耗量,及总共消耗量。
do
{
do
{
cout<<"\n请输入房间的长度(平方英寸):";//要求用户输入房间的基本信息
cin>>l;cin.ignore();
cout<<"\n请输入房间的宽度(平方英寸): ";
cin>>w;cin.ignore();
cout<<"\n请输入房间的高度(平方英寸): ";
cin>>h;cin.ignore();
cout<<"\n请输入房间的门和窗的总面积,即不需要刷漆的面积(平方英寸): ";
cin>>Sdw;
cin.ignore();//删除回车

//从用户处获取每平方英尺消耗油漆的信息

cout<<"\n每平方英尺消耗多少加仑的油漆?请在这输入 "<<endl;
cin>>costPer;//读取数值
cin.ignore();//删除回车

cout<<"\n您的房间长,宽,高分别是:"<<l<<","<<w<<","<<h<<"."<<endl;
cout<<"不需要刷漆的面积是:"<<Sdw;
cout<<"\n每平方英尺消耗"<<costPer<<"加仑的油漆"<<endl;

cout<<"请确认,以上信息对吗? yes/no ";
getline(cin,answer1);//确认信息

if((answer1 == 'no')||(answer1 == 'NO'))
cout<<"/n请重新输入"<<endl;
}while(answer1=='n'||answer1=='N');

totalS=l*w*h;//计算出房间的总面积
printS=totalS-Sdw;//计算出需要刷漆的面积
cout<<"\n房间总共的面积是:"<<totalS<<endl;
cout<<"\n需要刷漆的面积是:"<<printS<<endl;



costTol=totalS*costPer;//计算出总共消耗油漆的量。

cout.precision(2);
cout.setf(ios::fixed);

cout<<"\n您的房间总共面积是:"<<totalS<<"需要刷漆的面积是:"<<printS<<endl;
cout<<"\n总共需要消耗油漆 "<<costTol<<"加伦。"<<endl;

cout<<"需要重新输入并计算吗? y/n ";

getline(cin,answer2);
}while(answer2=='y'||answer2=='Y');
return 0;
}


[解决办法]
answer1 == "no" //""才是字符串 全部错误都是这个 检查一下 学会用编译器找错误
[解决办法]
楼上正解,字符用单引号,字符串用双引号。
[解决办法]
string answer1,answer2;
字符串,用双引号。
[解决办法]

探讨

嗯。 程序已纠正。谢谢。 我想再问一个问题, 为什么在visual C++6.0 里对于getline()函数要输入两次回车才能把数据输入。 并且还要cin.ignore() 来删除回车。

读书人网 >C++

热点推荐