所以,我在C ++中有这段代码,需要使用stoi来测试String(a)是否有字母,如果没有,则将数字发送给int,如果有返回false。
我的代码
void main(){
string a = "a1321";
int b;
if (stoi(a)){
b = stoi(a);
cout << b << endl;
}
else cout << "ERROR"<< endl;
system("pause");
}
任何人都可以帮忙吗?
由于stoi
如果解析后返回整数值,则不能直接使用该返回值检查正确性。
您可以捕获std::invalid_argument
异常,但可能太多了。如果您不介意使用strol
C函数代替std::stoi
,则可以执行以下操作:
bool isNumber(const std::string& str) { char* ptr; strtol(str.c_str(), &ptr, 10); return *ptr == '\0'; }
这利用了以下事实:该函数将第二个
char**
参数设置为传递的字符串中的第一个非数字字符,对于仅包含数字的字符串,该参数应为'\ 0'。
您可以编写类似的功能:
//使用此代码