“c”在cout、cin、cerr和clog中是什么意思?

54

coutcincerrclog名称中的“c”代表什么意思?

我觉得应该是代表字符(char),但我没有找到任何证实的信息。


2
@Rexxar 你可能需要重新考虑你的接受。这是一个很好的例子,说明为什么你不应该太快接受答案。我建议以后等待几个小时,以便更好的答案被发布出来。 - anon
1
@Neil Butterworth 我已经更改了被接受的答案。 - Rexxar
“cout”和“out”的区别是什么? - Walter Mitty
@WalterMitty 嗯,“cout”是C++中的字符输出流。“out”是英语单词。 - Jim Balter
4个回答

84

1
如果答案是正确的,那么它并不是非常有用的!所有的iostream对象都是字符流。cout和cin只是在stdout和stdin流(通常是“控制台”)上实例化的这样的对象,因此“控制台”似乎更可能且更有用作为标识符。如果它们不存在,stdout和stdin将是这些名称的明显选择。当然,标准库中的很少有符号是良好命名的典范! - Clifford
10
@clifford说得有道理。不幸的是,有wcout(为什么C/C++程序员不使用它?)它肯定代表“宽字符控制台”。为什么任何人会在现代LCD屏幕上使用80列控制台窗口呢? - Hans Passant
1
另请参阅 Stroustrup 的《使用 C++ 进行编程原理和实践》第 45 页:“名称 cout 的发音为“see-out”,是“character output stream”的缩写。在编程中,缩写相当普遍。当然,第一次看到缩写并且需要记住它可能有点麻烦,但一旦您开始重复使用缩写,它们就会变得自然而然,并且对于保持程序文本简短和易于管理至关重要。” - eric
1
在C++中有宽字符类型。并没有“宽控制台”的概念。 wcout 明确代表“宽字符输出”。 - Yongwei Wu

29

我最初猜测是控制台,并且此链接证实了这一点。但是在看到Stroustrup的引用之后,似乎这是一个误解,c代表字符

支持这个理论的一个指标是每个流对象(cincoutcerr等)都有一个相应的宽流对象(wcinwcoutwcerr等)。


4
希望能够从标准文档或 Stroustrup 的作品中找到一个参考,但我找不到。恐怕随机的网页并不算数。 - anon
1
我一直以为它指的是C++中的C :)(没有多想过...) - Viktor Sehr
@anon 他的维基百科页面表明Stroustrup.com确实是他的网站。此外,在被接受的答案下,eric评论说,“Stroustrup的《使用C++编程原理和实践》第45页也是这样说明的。”我目前无法访问该书,但我将会订购它。 - jgh fun-run

1

FredOverflow找到了正确答案,并附有指向Stroustrup网站的链接。

一个C++标准草案(n1905.pdf在www.open-std.org上;我没有确切的链接)似乎表明它来自于"C": "C标准输出" => cout

27.3 标准输入输出流对象 [lib.iostream.objects]

1- 头文件<iostream>声明了将对象与由<cstdio>中声明的函数提供的标准C流相关联的对象。

[...]

27.3.1 窄流对象 [lib.narrow.stream.objects]

istream cin

1- 对象cin控制从与对象stdin关联的流缓冲区中的输入,该对象在<cstdio>中声明。

[...]


-5

c代表C语言、C++语言和/或字符。


3
你基本上回答说你不知道真正的原因。在这种情况下,请不要发表回答。你应该删除它。 - prapin
2
这个答案是错误的。 - Martin
@Martin 我的意思是从技术上讲,Bjarne Stroustrup本人指出“character”是“c”的含义,但这就像在各个方向射击一百次并说“我打中了目标!” - jgh fun-run

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接