gpt4 book ai didi

c++ - "unformatted input function"到底是什么意思?

转载 作者:行者123 更新时间:2023-11-30 04:19:36 26 4
gpt4 key购买 nike

看完this post在 GameDev.net 上,我决定看一看 C++ 标准。有几个 std::istream 函数被标准描述为“无格式输入函数”(如 tellg()read() , ETC。)。一直以来,我一直认为“无格式输入功能”意味着当“无格式输入”时,文本在阅读时不会被格式化(例如,"\r\n"-> "\n") input function”被使用(不管是文本模式还是二进制模式)。显然,情况并非如此,因为 read() 方法仍会转换 "\r\n"-> "\n"(如果 std::ios_base::binary 未指定),尽管它是“未格式化的输入函数”。

现在我很困惑,因为我显然没有理解正确的事情。 “未格式化输入函数”到底是什么意思?是的,我已经阅读了第 27.7.2.3 节第 1 段,它似乎更多地讨论了处理错误而不是其他任何内容(当然,这是可能的我没有正确理解它,这可能是问题的一部分)。

我刚刚发现 tellg() 没有考虑格式转换,而 read() 考虑了这一事实,这让人相当困惑。在某种程度上,它是有道理的(因为 tellg() 如果它这样做了,那么它就是 O(n),如果 read() 没有,那么 text/二进制模式将远不那么重要)。但在另一个程度上,它似乎……不一致。我认为我的部分困惑和观察到的不一致可能来 self 对“未格式化输入函数”的明显误解。

最佳答案

未格式化的函数意味着该函数将流视为 char 序列,即使它是 doubleint。例如,如果流有 8.7,未格式化的函数 read 会将其读取为 '8'' 的序列。 ', '7' 并将它们存储在 char* 类型的缓冲区中。

另一方面,格式化函数将尝试将未格式化的缓冲区格式化为给定类型。如果给定的类型是 double,那么您将得到 8.7。如果未格式化的数据无法格式化为给定的类型,该函数会将流状态设置为failbit

关于c++ - "unformatted input function"到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15738188/

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