Jos*_*_mr 9 c++ namespaces getline
我正在阅读C++ Primer一书并尝试所有代码示例.我对这个很感兴趣:
#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main()
{
string line;
while (getline(cin,line))
cout << line << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在编译这段代码之前,我猜测编译会失败,因为我没有使用
while (std::getline(cin,line))
Run Code Online (Sandbox Code Playgroud)
为什么getline在全局命名空间中?据我所知,这应该只在我使用时发生
namespace std;
Run Code Online (Sandbox Code Playgroud)
要么
using std::getline;
Run Code Online (Sandbox Code Playgroud)
我在Linux Mint Debian Edition上使用g ++版本4.8.2.
当你使用时getline(cin, line),它等同于使用,getline(std::cin, line)因为你有这条线:
using std::cin;
Run Code Online (Sandbox Code Playgroud)
使用Argument Dependent Lookup(ADL),编译器能够解析该函数调用std::getline(std::cin, line).您可以在http://en.cppreference.com/w/cpp/language/adl上阅读有关ADL的更多信息.
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |