#include "../std_lib_facilities.h"
string make_name()
{
string name;
int selection;
cout << "Enter 1 steve. Enter 2 Mike.\n\n";
cin >> selection;
if (selection == '1')
name = "Steve";
else if (selection == '2')
name = "Mike";
return name;
}
int main()
{
cout << "Make a name\n";
make_name();
cout << "Your name is " << make_name;
keep_window_open();
}
而不是打印迈克或史蒂夫,它打印废话。我一直在研究我的程序的所有其他部分,但现在这是我唯一的问题。所以,躺在我身边。我做错了什么?
答案 0 :(得分:0)
这是因为
if (selection == '1')
这里你要比较一个int和char。这意味着&#39; 1&#39;将是此字符的ASCII值,不是1。
正确的条件陈述应该是: -
if (selection == 1)
答案 1 :(得分:0)
你打印垃圾的原因是因为在main的这一行:
cout << "Your name is " << make_name;
您打印出'make_name'函数的地址,而不是调用它的结果。
修复方法是捕获调用函数的结果并将其打印出来:
int main()
{
cout << "Make a name\n";
string name = make_name();
cout << "Your name is " << name;
keep_window_open();
}
另一个潜在问题是你的'make_name'函数内部,你的两个条件:
if (selection == '1')
name = "Steve";
else if (selection == '2')
name = "Mike";
您将'selection'(一个int)与ASCII字符1和2进行比较,这不是您想要的。
将其更改为:
if (selection == 1)
name = "Steve";
else if (selection == 2)
name = "Mike";
你应该得到想要的结果。
注意:另外,考虑将'selection'变量初始化为0.如果有人要输入“hello”而不是数字,那么应该可以防止意外结果。