在 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直接调用更冗长。
THE END
二维码