gpt4 book ai didi

c++ - 在没有循环/条件的情况下将字符串检查为 int 错误

转载 作者:行者123 更新时间:2023-11-30 05:28:33 25 4
gpt4 key购买 nike

我正在做一个关于 HR 的问题,无法弄清楚如何在不使用条件语句的情况下检查错误。这是如何在 C++ 中完成的?

// if string is int output it, else output "Bad string"
// need to do this without any loops/conditionals
int main(){
string S;
char *end;
long x;
cin >> S;
const char *cstr = S.c_str();
x = strtol(cstr,&end,10);

if (*end == '\0')
cout << x;
else
cout << "Bad string";

return 0;
}

我应该使用 strtol 之外的东西吗?

最佳答案

stoi确实是您想要使用的。

给定 string S 中的输入,一种可能的处理方式是:

try {
cout << stoi(S) << " is a number\n";
} catch(const invalid_argument& /*e*/) {
cout << S << " is not a number\n";
}

Live Example

这里的违规是stoi只需要消耗string的前导数字部分确保整个字符串是一个整数。所以“t3st”会失败,因为它没有以数字开头,但“7est”会成功返回 7。有 a handful of ways以确保整个 string 都被消耗,但是它们都需要一个 if - 检查。

关于c++ - 在没有循环/条件的情况下将字符串检查为 int 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36773569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com