在 stoi(s.substr(2,3)) 之前写“std::”是强制性的吗?

我已经看到,即使你没有std::stoi(s.substr(3,4))(where s="123456789")之前添加它也能正常工作,而且如果你写std::stoi(s.substr(3,4))的结果是一样的。那么,写它是std::stoi(s.substr(3,4))强制性的,还是只是一种好习惯?

std::string s = "123456789";
int ans = stoi(s.substr(3,4));
std::cout<<ans;
std::string s = "123456789";
int ans = std::stoi(s.substr(3,4));
std::cout<<ans;

两者都给出了相同的答案。而且有时写作也会std::stoi(s.substr(3,4));出错。

回答

std::由于参数相关的 lookup ,它无需编译。

我说这是一个很好的做法,std::stoi因为:

  • 更明显的是,正在调用标准函数。
  • 如果有人定义了一个stoi在您的代码之前命名的变量,它不会中断。这可以通过添加来解决using std::stoi;,但由于您调用一次,它比std::stoi直接调用更冗长。

以上是在 stoi(s.substr(2,3)) 之前写“std::”是强制性的吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>