scanf和cin的區別

睡不着,難得失眠,其實也不是失眠,白天睡多了。忽然想起白天做的一道題目,有個小提示,輸入要用scanf,當時不知道爲什麼,剛百度了下,廢話少說。下面是百度知道里面的。

————————————————————————————————————————————————————

scanf是格式化輸入,printf是格式化輸出。
cin是輸入流,cout是輸出流。效率稍低,但書寫簡便。

格式化輸出效率比較高,但是寫代碼麻煩。

流輸出操作效率稍低,但書寫簡便。

cout之所以效率低,正如一樓所說,是先把要輸出的東西存入緩衝區,再輸出,導致效率降低。

緩衝區比較抽象,舉個例子吧:

曾經就遇到過這樣的情況(類似的),
int i;
cout<<'a';
cin>>i;
cout<<'b';
運行結果什麼都沒看到輸出,輸入一個整型比如3再按回車後ab同時顯示出來了。
但是這樣的情況並不是經常發生,是在一些比較大型的工程中偶爾出現,原因是字符a先到了緩衝區,但是沒輸出,等輸入了i,b進入
緩衝區後再一併輸出的。
流輸入也是差不多的。

關於C++中用iostream好還是stdio.h比較好

這個問得的確不好回答了。。

iostream.h和stdio.h是C++的兩個頭文件,裏面是對於一些類,操作符,函數的定義,頭文件本身應該沒有好壞之分吧~~

————————————————————————————————————————————————————————

又查了一下,最新的G++,cin已經比scanf快了,ACM如果scanf超時的話可以用G++提交一下試一下,呵呵,不過,我以後還是打算老老實實的用scanf。。

cin的實時性較差,因爲它使用了緩衝區,一般情況下滿了才刷新的。
對於字符:cin的輸入忽略空格和回車。scanf("%c",&i)等價於i = getchar(),換行符和回車都會被讀入。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章