带有if语句的C ++字符串变量

时间:2014-01-24 18:25:39

标签: c++ string if-statement

我尝试以各种可能的方式重新定义这些变量 尝试让这条线工作。我只是举一个例子 这里代表什么令我不安。

double const FRAME_COST = 45.00;
string input;
char yes,
     no;
int frames;


cout << "Do you want additional frames? Type yes/no:  ";
cin  >> input;

    if (input == yes){
       cout << "How many?"
       cin >> frames;
       frames = frames * FRAME_COST;
       }

// The problem is in **the if statement**
// I need to use a string not a bool (according to my professor)
// I can't get the compiler to recognize the **if statement**
// I realize this isn't practical, but he always throws curve balls.

7 个答案:

答案 0 :(得分:9)

您当前的程序有未定义的行为,因为yesno是尚未初始化的字符变量,并且您在比较中使用其中一个。

要修复,请删除yesno的声明(您不需要它们),然后使用字符串文字:

if (input == "yes") {
    ...
}

注意:您的比较可能过于严格,因为它区分大小写。它需要yes,但不会以YesYES作为答案。要解决此问题,您可能希望在比较之前将输入字符串转换为小写。

答案 1 :(得分:4)

const string YES = "yes";
const string NO = "no";
const double FRAME_COST = 45.0;


int main()
{
    string input;
    double frames;
    cout << "Hello World" << endl; 
    cin >> input;

    if(input == YES)
    {
        cout << "How many?" << endl;
        cin >> frames;
        frames = frames * FRAME_COST;
        cout << frames << endl;
   }

   return 0;
}

答案 2 :(得分:3)

只是将char命名为“是”而另一个char名称为“否”是不够的,尤其是因为您实际上从未向他们提供任何值。我想你打算写:

if (input == "yes") {

答案 3 :(得分:3)

input == yes需要input == "yes"引号让编译器知道它是字符串而不是标识符。我也认为this可能会有所帮助。

答案 4 :(得分:2)

您需要与字符串或字符数组进行比较。

if (input == yes)

此行不执行任何操作,因为yes是一个永远不会初始化的字符指针。它应该是

if (input == "yes")

并且您不需要yes变量(或者,您可以使用要检查的值声明一个常量字符串:例如const std::string YES("yes");

请注意,您可能还应考虑区分大小写。

此外,您将整数frames乘以双FRAME_COST(可能是为了获得总费用?)。这将导致截断的整数值,因为您将其存储在int中。如果您希望费用以美元和美分计算,则应将其存储在doublefloat中:

double cost = frames * FRAME_COST;

答案 5 :(得分:1)

yesno应该是字符串常量(如果你想让它们与输入完全匹配),const std::stringconst char*(或自动),但是你必须得到一个价值。

double const** FRAME_COST = 45.00;
string input;
const char* yes = "yes"
const char* no = "no";
int frames;


cout << "Do you want additional frames? Type yes/no:  ";
cin  >> input;

    if (input == yes){ // exact comparison (maybe add a space trim of input?)
       cout << "How many?"
       cin >> frames;
       frames = frames * FRAME_COST;
       }

答案 6 :(得分:0)

不是只为一个输入创建if语句,而是有一种方法可以对一个if语句使用多个输入而不必创建多个if语句呢?

例如...

string input;
cout << "Are you Bob?";
if (input == "yes", "no", "maybe"){

cout << "Sure...";

}else {
cout << "CANNOT COMPUTE";
}

每次尝试此操作时,输入都可以是任何东西,并且就像我说“是”,“否”或“也许”一样。