c++ - getline() 函数从何而来?

标签 c++ header namespaces getline argument-dependent-lookup

不久前我开始学习 C++。
开始了解头文件和预处理器语句。
我知道 std::cin 和 std::cout 是在标准库 IOSTREAM 中声明的对象/函数。
但是当将输入作为字符串并读取整行时。我们必须使用 getline() 函数,或者至少教师在视频中使用它。
现在我在互联网上查了一下,大多数站点都显示 getline() 是在 下定义的。字符串 文件/库。但问题是即使不包含字符串文件,我的程序也能正常运行。那么我缺少什么。?或者做错了什么。如果可以,还请解释 getline 函数的工作原理。并请使用命名空间 std 和使用 std::之间的实际区别是什么?
谢谢

#include <iostream> 

int main() 
{ 
    std::string str; 
  
    std::cout << "Please enter your name: \n"; 
    getline(std::cin, str); 
    std::cout << "Hello, " << str 
         << " welcome to GfG !\n"; 
  
    return 0; 
} 

最佳答案

您必须包含标题 <string>使用函数 std::getline . <iostream> 是否由实现定义包括标题 <string> .
在此调用中使用不合格的名称 getline

getline(std::cin, str);
编译器应用参数相关查找 ADL(第一个参数 std::cin 定义在命名空间 std:: 中)并找到相应的名称 std::getline在命名空间 std:: .

关于c++ - getline() 函数从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63740929/

相关文章:

c++ - 将迭代器设置为具有最高键的值

c++ - C++ Headers可以叫vector.h还是matrix.h?

c++ - 包含头文件时出错

c - 类型 fatal error : gtk/gtk. h: Eclipse (Oxygen) 编译期间没有此类文件或目录

Kubernetes:如果创建新的命名空间需要通知

C库双下划线混淆

c++ - "magic number"的概念是否随着语言的变化而变化?

HTML 和 CSS - 将标题中的文本居中在 Logo 和按钮之间

php header 下载重定向

c++ - 我应该对 C++ 中的非顺序常量使用枚举还是多个常量?