如何使用stoi,如果字符串在c ++中为字母,则返回false?

问题描述 投票:1回答:3

所以,我在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");

}

任何人都可以帮忙吗?

c++ string int
3个回答
2
投票

由于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'。


0
投票

您可以编写类似的功能:


0
投票

//使用此代码

© www.soinside.com 2019 - 2024. All rights reserved.