【问题标题】:Why cin.get(char *, int, char t) and cin.getline(char *, int, char t)?为什么是 cin.get(char *, int, char t) 和 cin.getline(char *, int, char t)?
【发布时间】:2011-01-16 18:22:09
【问题描述】:

文档说 cin.get(...) 会将终止字符(参数 t)留在缓冲区中!我想知道与将丢弃终止字符的 getline(...) 相比,这有什么用处...顺便说一句,假设我有 char buf[256],我怎样才能将该 buf 刷新到 cout?

【问题讨论】:

  • 请编辑您的问题标题:您已经回答了“有什么区别”!
  • 请不要在同一篇文章中提出第二个不相关的问题。

标签: c++ iostream


【解决方案1】:

对于行,终止换行符被认为是行的一部分,您通常希望在读取行时将其删除。然而,约定已确定包含 not 行的结果字符串包含该换行符,这就是 getline 丢弃它而不是存储它的原因。 (其他语言/库不会做出后者的决定。)

对于除行之外的内容,分隔符可能不被视为被提取字段的一部分,因此您希望将其保留并稍后读取。

假设我有 char buf[256],我怎样才能将该 buf 刷新到 cout?

如果这是一个 C 字符串(以 \0 结尾),那么 cout

【讨论】:

  • 我发布但随后删除了一个非常相似的答案,因为我无法发明它的用途......你有例子吗?
  • @larsmans:考虑一下您是否正在实施tee 程序。
  • 我会通过 char 复制、依赖 iostream 缓冲或使用固定大小的缓冲区来实现 teechar...
猜你喜欢
  • 1970-01-01
  • 2013-08-22
  • 2020-11-03
  • 1970-01-01
  • 2017-06-08
  • 2019-11-15
  • 2015-01-05
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多