[問題] 為什麼 getline() 不加 endl 就沒辦法印出

作者: hunandy14 (Charlott.HonG)   2021-05-22 02:06:43
代碼在VS2019上執行是正常的,但是在gcc上卻出了奇怪的狀況
想請問為什麼這段代碼裡面的 cout 只要結尾沒有 endl 就沒辦法輸出了
https://replit.com/@hunandy14/svtest
網站可以直接執行,錯誤的情況跟我在電腦上跑的是一樣的
電腦上的gcc版本
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
g++ -std=c++17 -o main main.cpp; ./main
作者: oToToT (屁孩)   2021-05-22 04:34:00
在 repl 上感覺是被 \r 坑了而已,它實際上是有印出來的喔喔,你電腦上也是 ubuntu ,那就是 \r 的問題吧你可以試試看 printf("2\r"); 你可能也不會看到它的輸出或者 printf("2\r1") 你可能只會看到一個 "1",因為 \r 把要印的 cursor 又移到最前面了,所以前面的 2 會被後面的輸出蓋掉,導致你沒看到它
作者: Lipraxde (Lipraxde)   2021-05-22 12:41:00
./main > out.txt,再把 out.txt 開起來看,你就知道是不是真的沒輸出了
作者: LPH66 (-6.2598534e+18f)   2021-05-22 14:08:00
這樣說吧, 寫 C/C++ 只有很少的機會會寫出 \r如果只是單純要換行的話 \n 就夠用了會用 \r 的大概只有 (1) 螢幕顯示單行更新 (如單行進度條)(2) 處理的根本就是二進位資料單行更新原理就是前幾樓提的 \r 的作用: 移游標到這行開頭C++ 的 endl 其實只是印出 "\n" 後加 flush 而已
作者: Lipraxde (Lipraxde)   2021-05-22 19:50:00
dos2unix <- 好用
作者: rex0707 (我就是我)   2021-05-29 19:11:00
推樓上 我以前也遇過從win複製文字檔到centos會有問題

Links booklink

Contact Us: admin [ a t ] ucptt.com