cout与printf的区别具体有哪些呢?

ToBeOOP 2010-08-16 07:07:32
如题
...全文
1061 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
ropert911 2010-08-20
  • 打赏
  • 举报
回复
一个是函数,一个是对象
芳草天 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 liuxingzdh 的回复:]
pirntf高效一点。count脑残一点。OK?
[/Quote]
靠打错。cout脑残一点。
芳草天 2010-08-20
  • 打赏
  • 举报
回复
pirntf高效一点。count脑残一点。OK?
youdaping777 2010-08-20
  • 打赏
  • 举报
回复
cout方便,要求硬件比较高(I/O复杂),不稳定,速度相对printf比较慢,printf稳定,但不方便用。
T0Ols 2010-08-20
  • 打赏
  • 举报
回复
对,翻译汇编你就可以知道了,如果不会翻译,你就跟踪,二者的区别是很大很大的,说不大的那是没研究过,我就是由cout 转printf的 能用C的尽量用C,如果能用汇编的尽量用汇编,不为求程序大小,而是求程序的精华[Quote=引用 8 楼 jackyjkchen 的回复:]

VC6等早期的stl线程不安全,sgi、gcc、vs的stl如果仅仅是作输出的话,可以算线程安全,不需要同步

printf要看你是否连接了线程安全的运行库,比如VC6的默认设置是连接单线程运行库,那就不安全了

ps:dll版本的C运行库都是线程安全的
[/Quote]
chenyu2202863 2010-08-19
  • 打赏
  • 举报
回复
说cout慢的同学们,你们可能没有研究过C++IO,是因为C++ IO 库的复杂性,出现各种误用,反过来却作为攻击 C++ IO 效率低的凭证。
你们可知他使用了缓冲区,可知要提高速度,就直接写缓冲麽?而且M$的实现确实不怎么高效,但是安全性好!给段代码,你们测试吧~

start = clock();
cfile = fopen("text_out_C_fputs.txt", "w");
for (int i = 0; i < testsize; ++i)
{
fputs(cstr, cfile);
fputc('\n', cfile);
}
fclose(cfile);
printf("Text out C fputs: %d\n", clock() - start);

start = clock();
cfile = fopen("test_out_C_fprintf.txt", "w");
for (int i = 0; i < testsize; ++i)
{
fprintf(cfile, "%s\n", cstr);
}
fclose(cfile);
printf("Text out C fprintf: %d\n", clock() - start);

fout.clear();
start = clock();
fout.open("text_out_Cpp_ofstream.txt");
for (int i = 0; i < testsize; ++i)
{
fout << cstr << '\n';
}
fout.close();
printf("Text out Cpp ofstream: %d\n", clock() - start);

fout.clear();
start = clock();
fout.open("text_out_Cpp_rdbuf.txt");
for (int i = 0; i < testsize; ++i)
{
fout.rdbuf()->sputn(cstr, cstrlen);
fout.rdbuf()->sputc('\n');
}
ningweidong 2010-08-19
  • 打赏
  • 举报
回复
cout更好一些
willabc 2010-08-19
  • 打赏
  • 举报
回复
学习了!
MasQua 2010-08-19
  • 打赏
  • 举报
回复
面向对象有面向对象的好处,C++风格你对一个新的类型重载了一个operator<<以后你不仅可以对屏幕的标准输入输出做这个,对文件也是一样,就跟JAVA里面的toString方法一样,你那边写对了,调用它的地方不可能出现输出的错误;反过来输出有错了你可以拿那个模块单独调试,这就是“模块化”的好处。而printf你每次写都得重新校对那些%会不会写错或对偏。

这不是一个cout和printf,而是一个编程风格或编程思想的问题。用C的话当然printf,用C++的话,除非为了特殊需要,否则还是cout。虽然没有人阻止你用C风格写C++程序,但是那样你为什么不直接用C呢?
ycl1314 2010-08-19
  • 打赏
  • 举报
回复
路过,学习。
赵4老师 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 chb1991123 的回复:]
引用 9 楼 zhao4zhong1 的回复:
摒弃cout,cin
使用printf,scanf


貌似 你很支持 C哈
[/Quote]
因为我受过cout和cin的刺激
chb1991123 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhao4zhong1 的回复:]
摒弃cout,cin
使用printf,scanf
[/Quote]

貌似 你很支持 C哈
china_west 2010-08-17
  • 打赏
  • 举报
回复
编译器不同就不同
处处留心 2010-08-17
  • 打赏
  • 举报
回复
一个C++的,一个C的
ToBeOOP 2010-08-17
  • 打赏
  • 举报
回复
看了各位的观点感觉是在对程序的效率要求苛刻的时候才用printf,当然是在保证安全的前提下...
qazwhl845174869 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yzx714 的回复:]
一个是对象,一个是函数
一个慢,一个快
一个不方便,一个方便
[/Quote]
顶啊!
qszhou 2010-08-17
  • 打赏
  • 举报
回复
一个过程,一个对象!!
gigibuffon 2010-08-17
  • 打赏
  • 举报
回复
都别用了
自己写输入输出函数吧。
都先生 2010-08-17
  • 打赏
  • 举报
回复
printf仅仅是个函数。cout是提供的一套处理输出的对象集合。
koolxiaoyuer 2010-08-17
  • 打赏
  • 举报
回复
我认为还是格式化的区别
加载更多回复(14)

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧