为什么cin.get(char *,int,char t)和cin.getline(char *,int,char t)?

时间:2011-01-16 18:22:09

标签: c++ iostream

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

1 个答案:

答案 0 :(得分:2)

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

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

  

假设我有char buf [256],如何将该buf刷新到cout?

如果那是一个C字符串(以\ 0结尾),那么cout<< BUF ;.否则,您可以将其作为未格式化的字节序列进行cout.write。