gpt4 book ai didi

c++ - 为什么 std::cin.getline 没有重载方法来获取 std::string?

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

我很好奇 cin.getline 的技术原因和 global 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 );

是不是因为可能要添加其他类型,不想把字符串嫁给cin?

最佳答案

请参阅我对 a similar question 的回答.这可能是 C++ 标准委员会的疏忽,但也可以用依赖性问题来解释。如果标准需要 std::string 的函数重载在<iostream> header 那么它需要实现者 #include<string><iostream> .这是一个依赖性要求,这会进一步减慢编译任何需要 <iostream> 的东西的速度。 -- 即使编译单元本身不需要 std::string .

请注意,另一方面 <string> header 具有引用 std::basic_istream<> 的函数和 std::basic_ostream<> ;但该标准还需要一个名为 <iosfwd> 的 header 前向声明所有 IO 设施,使 <string> header 依赖于快速编译时 <iosfwd> header 。相反,依赖项的编译速度会慢得多。

关于c++ - 为什么 std::cin.getline 没有重载方法来获取 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110021/

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