gpt4 book ai didi

c++ - 是否必须在 stoi(s.substr(2,3)) 之前写入 "std::"?

转载 作者:行者123 更新时间:2023-12-04 14:35:14 26 4
gpt4 key购买 nike

我已经看到,即使您不在 std:: (其中 stoi(s.substr(3,4)) )之前添加 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:: 的情况下编译因为argument-dependent lookup .
我说使用 std::stoi 是个好习惯因为:

  • 更明显的是,正在调用标准函数。
  • 如果有人定义了一个名为 stoi 的变量,它不会中断。在您的代码之前。这可以通过添加 using std::stoi; 来解决,但是因为你调用一次,它比调用 std::stoi 更冗长直接地。
  • 关于c++ - 是否必须在 stoi(s.substr(2,3)) 之前写入 "std::"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68895067/

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