从函数获取输入 - c ++

时间:2015-05-07 02:29:16

标签: c++ function variable-assignment temporary

我在c ++中遇到了一个问题,我调用了一个为事物分配一些值的函数,但是在函数完成后这些赋值会丢失。这是我的代码:

#include <iostream>
#include <string>

using namespace std;

void Input(string a, string b){

    cout << "Input a: \n";
    cin >> a;
    cout << endl;

    cout << "Input b: \n";
    cin >> b;
    cout << endl << "Inputen Strings (still in the called function): \n";
    cout << a << " " << b << endl << endl;
};

int main(){
    string c = "This didn't";
    string d = "work";

    Input(c,d);

    cout << "Inputen Strings (now in the main function): \n";
    cout << c + " " + d << endl;

    return 0;
};

因此,无论何时运行它,(输入“Hello”然后“World”),程序运行如下:

  

输入a:

     

您好

     

输入b:

     

世界

     

Inputen Strings(仍然在被调用的函数中):

     

Hello World

     

Inputen Strings(现在在主函数中):

     

这不起作用

我不知道为什么它只是暂时保存这些值。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

通过引用传递您的字符串,这将允许被调用的函数更改它们,以便调用函数中的变量将具有指定的值。

现在通过值传递的方式,您只是发送变量的副本,以便在Input返回时丢失新值。

void Input(string &a, string &b)
{
  ...
}

答案 1 :(得分:0)

更改您的方法签名以接受变量“&amp;”

的地址
void Input(string &a, string &b)

没有“&amp;”运算符您只是将变量的副本发送到函数中,使用“&amp;”您通过引用传递变量的运算符的地址