我很好奇cin.getline的技术原因和全球getline功能在不同的地方.
不简单地为cin定义所有这些函数签名的动机是什么:
//THESE TWO EXIST
istream& cin::getline (char* s, streamsize n );
istream& cin::getline (char* s, streamsize n, char delim );
//THESE TWO COULD EXIST
istream& cin::getline (string &s);
istream& cin::getline (string &s, char delim );
Run Code Online (Sandbox Code Playgroud)
是因为其他类型可能想要添加,他们不想将字符串结合到cin?
请参阅我对类似问题的回答。这可能是 C++ 标准委员会的疏忽,但也可以用依赖性问题来解释。如果标准要求标头std::string中的函数重载<iostream>,那么它将要求实现者#include<string>在<iostream>. 这是一个依赖性要求,这会进一步减慢编译任何需要的东西<iostream>——即使编译单元本身不需要std::string。
请注意,另一方面,<string>标头具有引用 和std::basic_istream<>的函数std::basic_ostream<>;但该标准还需要一个名为 的标头,<iosfwd>该标头向前声明了所有 IO 设施,使该<string>标头依赖于编译时快速<iosfwd>标头。相反的依赖关系编译起来会慢得多。
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |