C ++:如何为返回函数设置if-else语句

时间:2013-09-08 04:40:01

标签: c++

我正在为数学课做这个,并且无法使if-else语句起作用。有人能告诉我应该为else语句做些什么吗?我的想法是将一个向量传递给一个函数,每当函数看到“关闭”时,它就会将其更改为“打开”,反之亦然。编译器总是在if语句处停止,在向量中的第一个元素发生更改后没有任何内容:

string getValue(vector<string> &arr)
{

    for(int i=2; i <=50; i++)
    {
        if(arr[i]=="close")
        {
          return arr[i]="open";
        }
    }

    return "close";

}

2 个答案:

答案 0 :(得分:2)

问题是returnif语句第一次为真时,return语句执行,从当前函数返回。据推测,您的意图是array[i] = "open";

else而言,根据您的描述,您需要以下内容:

else if (array[i] == "open")
    array[i] = "close";

就我个人而言,我认为我会将其更改为使用数字,而相关的字符串则单独存储:

enum { OPEN, CLOSE };
static const int names[] = {"open", "close"};

然后您可以将OPEN转换为CLOSE,反之亦然,例如:

for (int &i : arr)
    i = 1 - i;

答案 1 :(得分:1)

尝试:

void getValue(vector<string> &arr)
{
    for(int i=0; i <arr.size(); i++)
    {
        if(arr[i]=="close")
        {
          arr[i]="open";
        }
        else if(arr[i]=="open")
        {
          arr[i]="close";
        }
    }
}