-2
我試圖從用戶使用std :: string得到一個數字,並且想要先檢查該字符串是否爲空,並且它只包含數字,然後檢查數字是否高於比零0短路評估VS 2017 C++
當我建立它,只需按下輸入我得到一個異常未處理的無效參數在stoi函數。
我在VS(2012)的舊版本中嘗試它,並得到相同的錯誤。
短路評估是否適用於VS?
static const bool is_number(const char caracter)
{
return(caracter >= '0' && caracter <= '9');
}
template <typename T> static const bool all_numbers(const T &str)
{
if (!str.empty())
{
auto it = str.cbegin();
if ((str.front() == '+' || str.front() == '-') && (str.size()>1)) ++it;
for (it; it != str.cend(); ++it) if (!is_number(*it)) return false;
return true;
}
else return false;
}
int main()
{
std::string str;
do
{
std::cout << " Number: ";
getline(std::cin, str);
std::cin.clear();
}while (!all_numbers(str) && std::stoi(str) <= 0);
return 0;
}
您採取了哪些步驟來解決您的問題? –
我可以只添加另一個do-while,它會工作,但我想知道VS的短路是否工作? – Yaz
當您遇到此結果時,您提供給您的程序的輸入是什麼? –