C ++:STRING函数返回十六进制值而不是字符串

时间:2015-08-03 15:38:51

标签: c++

在我学习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是很好的理解。谢谢大家!

3 个答案:

答案 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";