gpt4 book ai didi

C++ getline() 不需要命名空间声明

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:38 25 4
gpt4 key购买 nike

为什么 getline() 来自本地范围内的 header string 并且可以使用:

#include <iostream>
#include <string>

int main() {
std::string str;
getline(std::cin, str);
std::cout << str << "\n";
return 0;
}

这适用于 gcc。但为什么?它在 header string 中定义,这应该要求我使用 std::getline() 而不是 getline()

最佳答案

您正在体验参数相关查找(ADL,也称为 Koenig 查找)。由于一个或多个参数是 std 命名空间中定义的类型,因此它会在 std 命名空间中搜索该函数,而不是搜索其他任何地方。我给你指点 Stephan T. Lavavej's video了解更多信息和一般名称查找。

关于C++ getline() 不需要命名空间声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15991532/

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