文档说cin.get(...)会将终止字符(参数t)留在缓冲区中!我想知道与getline(...)相比,这将是多么有用,它会丢弃终止字符...顺便说一句,假设我有char buf [256],我怎么能将那个buf刷新到cout?
答案 0 :(得分:2)
对于线条,终止换行符被视为该行的一部分,您通常希望在读取一行时将其删除。约定已确定包含行 not 的结果字符串包含该换行符,但这就是getline丢弃它而不是存储它的原因。 (其他语言/图书馆不作出后一种决定。)
对于除行之外的其他内容,分隔符可能不被视为正在提取的字段的一部分,因此您希望将其留下并稍后读取。
假设我有char buf [256],如何将该buf刷新到cout?
如果那是一个C字符串(以\ 0结尾),那么cout<< BUF ;.否则,您可以将其作为未格式化的字节序列进行cout.write。