我有一個循環內的函數,通過檢查每個元素檢查它是否與函數的參數相匹配的增量。C++ |我如何循環如果沒有每次返回一個值的聲明
我的問題是要求返回一個值。由於返回一個值完成了函數,如果一個錯誤的匹配返回false,並且我需要在每個控制路徑上返回一個值,那麼我將無法檢查數組中的任何其他元素以查看它們是否匹配。
我的大部分經驗都在AS3中,其中這個函數結構確實有效。我將如何在C++中正確地構造這個函數?
功能:它的目的是檢查輸入的命令存在,並返回一個布爾值,如果真或假
bool Commands(string _input)
{
string cmds[] = { "login", "logout", "exit" };
int i = 0;
do {
if (_input == cmds[i])
{
return true;
}
else
{
if (i == sizeof(cmds))
{
return false;
}
}
i++;
} while (i < sizeof(cmds));
}
'的sizeof(CMDS)'沒有做什麼,你認爲它。 – jamesdlin
'返回std :: find(std :: begin(cmds),std :: end(cmds),_input)!= std :: end(cmds);'? – Jarod42
有沒有像這樣的函數返回一個布爾值很多點 - 你的程序幾乎肯定需要類似的代碼來確定*已經輸入了哪些*命令,所以你不妨返回一個'int' - 值'i',並且說'-1'表示無效的命令;那麼你可以在'switch'語句中使用'int'值。多花點功夫,你可以爲每個命令和一個無效的標記創建一個「enum」。也就是說,直接使用'if(input ==「login」)... else if(input ==「logout」)... else // invalid ...;'在調用者中通常是最好的。 –