在我学习C ++的第二个月里,我得到了这个: STRING类型功能,用于从两个用户输入的菜肴中构建和返回菜单 (在VisualStudio2013中编译并运行)
#include "../../std_lib_facilities.h"
string LeMenu(string meal, string dessert) //a F() concatenates 2 strings
{
return meal, dessert; //also tried meal+dessert
}
int main()
{
string course1, course2;
cout << "What is your chice today Sir?\n";
cin >> course1 >> course2; //request to input meals
LeMenu(course1,course2);
cout << "Is " << LeMenu << " ok?\n"; //here we output
keep_window_open();
}
但它总是返回一个HEXADECIMAL VALUE,我不知道为什么: (在VisualStudio2013中编译并运行)
Is 012D15CD ok?
而不是JamEggs好吗? (作为例子)
据我所知,我不明白为什么,我的教科书甚至没有暗示这是一个可能的问题,我在互联网上找不到任何暗示! 不仅仅是一种解决它的方法,如果这是一个预期的mssbehavior是很好的理解。谢谢大家!
答案 0 :(得分:4)
您正在打印LeMenu
的功能地址。试试这个:
cout << "Is " << LeMenu(course1, course2) << " ok?\n";
请注意,您回归的可能不是您想要的:
return meal, dessert; //Only returns dessert
你可能想要:
return meal + dessert;
答案 1 :(得分:2)
cout << "Is " << LeMenu << " ok?\n";
打印函数LeMenu()
的地址而不是返回的字符串。要打印返回的字符串,您需要调用函数,如:
cout << "Is " << LeMenu(course1,course2) << " ok?\n";
另外
string LeMenu(string meal, string dessert) //a F() concatenates 2 strings
{
return meal, dessert; //also tried meal+dessert
}
不会返回连接字符串。它使用comma operator,只返回字符串dessert
。您需要添加<string>
标题,然后才能使用+
运算符
return meal + dessert;
答案 2 :(得分:2)
在
cout << "Is " << LeMenu << " ok?\n";
您打印该功能的地址。
你想要
cout << "Is " << LeMenu(course1, course2) << " ok?\n";